1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-10 05:25:14 +00:00
Commit graph

1369 commits

Author SHA1 Message Date
Samuel Gomes 18efb60cc3
Merge branch 'QB64-Phoenix-Edition:main' into image-load-from-memory-support 2023-02-07 18:32:03 +05:30
github-actions[bot] b3044016f7 Automatic update of ./internal/source 2023-02-06 18:26:09 +00:00
github-actions[bot] 837eee255a Automatic update of ./internal/source 2023-02-02 10:25:48 +00:00
Matthew Kilgore 42bded9ba9 Fix build on MacOS High Sierra
Fairly simple, MacOS High Sierra's libcurl version is too old and not
have `CURLINFO_CONTENT_LENGTH_DOWNLOAD_T`. This adds a version check to
use the older version of that command which gives back a double instead.

Fixes: #287
2023-01-20 13:30:12 -05:00
github-actions[bot] 48bbcb618e Automatic update of ./internal/source 2023-01-20 01:15:36 +00:00
Samuel Gomes a62e3cb155
Merge branch 'QB64-Phoenix-Edition:main' into image-load-from-memory-support 2023-01-18 16:57:00 +05:30
github-actions[bot] 474281133e Automatic update of ./internal/source 2023-01-17 20:48:07 +00:00
Samuel Gomes 68234d4786 Fix ambiguous overload 2023-01-11 22:09:24 +05:30
Samuel Gomes f0f0a9a420 Overload _LOADIMAGE to allow strings as the 2nd parameter 2023-01-11 16:18:43 +05:30
Samuel Gomes 05392054a4 Image will load in the write page's bpp (if not specified) 2023-01-09 22:33:45 +05:30
Samuel Gomes 00ccc61fcb Add load from memory feature for images 2023-01-09 13:01:56 +05:30
github-actions[bot] c166e11460 Automatic update of ./internal/source 2023-01-09 03:58:25 +00:00
github-actions[bot] 638a5d0fa9 Automatic update of ./internal/source 2023-01-09 02:53:05 +00:00
Matthew Kilgore f082889c1f Remove unused code from tinyfiledialogs.c 2023-01-08 20:24:25 -05:00
Matthew Kilgore f21ce09e2d Replace time() with std::chrono, fix startup delay
Currently main() includes logic that is intended to sync time() with
GetTicks() for the purpose of using GetTicks() to get millisecond
accuracy with time(), which only has second accuracy. Unfortunately, the
'syncing' up of these time sources results in an average of a half
second delay in starting a QB64-PE program.

This logic is easly replaced with std::chrono, which provides a real
time clock which is also millisecond accurate. That removes the need to
use time() and GetTicks() together to get millisecond accuracy, and
means the delay syncing them is no longer necessary.

I also separated most of the "delay" and "time" related functions into
datetime.cpp, and included the new std::chrono code into that file.

Since I needed to call some of the rounding functions in datetime.cpp I
also moved that stuff out into its own .cpp and header files to clean
things up a bit.

Fixes: #282
2023-01-08 20:24:25 -05:00
Matthew Kilgore a3cea42e0d Move icon image creation to sub__icon
The icon image creation is actually fairly expensive because the first
time you create a 32-bit image init_blend() is called, which is fairly
slow. Since only sub__icon makes use of these images (non-Windows
platforms and $Console:Only programs can't even use them) it's easy
enough to move the creation into sub__icon so the creation cost is
avoided on startup.
2023-01-08 20:24:25 -05:00
Matthew Kilgore f88960966b Fix use-after-free bug in buffer.cpp
Fairly simple, the finished entry is free'd and then removed from the
list, but that order results in us accessing the entry's next member
after it has been free'd. Swapping the order of the operations fixes the
issue.

Fixes: #281
2023-01-08 20:24:25 -05:00
Samuel Gomes 9686676324 BufferMap: only delete assignment operators 2023-01-09 06:11:21 +05:30
Samuel Gomes 60204afc8e Update delete copy and move constructors and assignments for BufferMap 2023-01-09 06:06:58 +05:30
Samuel Gomes d48df65282 Delete copy and move constructors and assignments operators for BufferMap class 2023-01-09 06:02:29 +05:30
Samuel Gomes 8c0590acee Add workaround for _SNDCOPY for sound created using _SNDOPEN(buffer, "memory") 2023-01-09 05:33:39 +05:30
Samuel Gomes 2e176ebf98 Set AUDIO_DEBUG to 0 2023-01-08 00:34:58 +05:30
Samuel Gomes 2957c41061 Workaround for _SNDCOPY for _SNDNEW sounds. Another one to follow for _SNDOPEN(buffer, "memory") 2023-01-08 00:14:59 +05:30
Samuel Gomes 5a893b8ffc Update comments and some beautification 2023-01-06 20:32:03 +05:30
Samuel Gomes eacee1f609 Add PushMonoSampleFrames 2023-01-06 12:21:17 +05:30
Samuel Gomes f7690aea17 Update comments 2023-01-02 16:24:08 +05:30
Samuel Gomes ecfe4fb1be Format code 2023-01-01 23:17:56 +05:30
Samuel Gomes 6c72deafc1 Improve _SNDOPEN test and supress printfs in Hively replayer code 2023-01-01 23:14:05 +05:30
Samuel Gomes e4273c0a68 Add Amiga AHX & HVL decoder 2023-01-01 22:56:02 +05:30
Samuel Gomes 061bf6af3d Rename _NEWSOUND to _SNDNEW to align with _SND* APIs 2022-12-31 12:00:38 +05:30
Samuel Gomes da9d9e871c Fix for template argument deduction/substitution failed 2022-12-31 05:18:22 +05:30
Samuel Gomes 4c80f6bcea Implement feature request #28 2022-12-31 01:49:23 +05:30
Samuel Gomes eebb56afd5 Implement load sound from memory #232 2022-12-22 20:42:27 +05:30
Samuel Gomes a72f80258f Address #186 2022-12-22 15:11:20 +05:30
Samuel Gomes bc65076feb Reduce mutex locks by using 2 vectors for _SNDRAW 2022-12-21 11:47:41 +05:30
Samuel Gomes b187102668
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-12-21 04:22:23 +05:30
github-actions[bot] 55b168db6c Automatic update of ./internal/source 2022-12-20 13:31:46 +00:00
github-actions[bot] 0c28341eb9 Automatic update of ./internal/source 2022-12-19 15:39:35 +00:00
Samuel Gomes 1357f53041 Add NO_PITCH, NO_SPATIALIZATION flags for raw ma_sound 2022-12-16 12:28:22 +05:30
Samuel Gomes bcc7105641 Avoid getting queue size inside loop 2022-12-16 03:50:32 +05:30
Samuel Gomes bd82b24ac7 Improve SOUND timing - #167 2022-12-15 10:47:27 +05:30
Samuel Gomes df9b739e23 Address #166 - _SNDRAW using miniaudio data source 2022-12-15 09:16:42 +05:30
Samuel Gomes cf16cb0c00 Replace custom queue code with C++ STL queue 2022-12-13 09:12:52 +05:30
Samuel Gomes 7f2ab7e83a
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-12-04 01:32:39 +05:30
github-actions[bot] 6aea9b3a65 Automatic update of ./internal/source 2022-12-03 17:00:49 +00:00
Matthew Kilgore 7ac2eefcb8 Fix slowdown of _ScreenX and _ScreenY
The commands _ScreenX and _ScreenY got significantly slower due to the
need to wait for the GLUT thread to wake up and execute the glutGet()
command for them. We've already seen a few programs (including the IDE)
where this behavior completely grinds the program to a halt, so we
definitely can't keep it.

The simple solution here is to not call glutGet() on every _ScreenX/Y
command. Instead every time the idle/timer function runs we get the
current values for the relevant glutGet() variables and store them.
libqb_glut_get() then checks if the value being read is one of the ones
we read in the idle/timer functionand if so just returns the last read
value. By doing it this way the commands no longer has to wait on the
GLUT thread for the result.
2022-11-30 17:33:17 -05:00
Matthew Kilgore f7fabda198 Fix random seg faults on exit
Fairly straightfowrad, programs were randomly seg faulting on exit. This
was happening due to GLUT registering a cleanup function via atexit(),
which then gets called when exit() is called.

The issue happens when exit() is called on a thread other than the GLUT
thread, which leads to the exit() call then attempting to cleanup GLUT
while the other thread is still using it, which randomly leads to seg
faults.

Fixing this is slightly annoying. We cannot stop the GLUT thread, as
the basic GLUT API (which is used on Mac OS) simply does not offer a way
to exit the glutMainLoop() call. Thus the simplest solution is to simply
make sure we call exit() on the GLUT thread, which we can fairly easily
due via the message queue.

That being the case, a new libqb_exit() API was added, which simply
regsiters the GLUT exit message and then waits for the program to end.
The atexit() handler then runs on the GLUT thread and everything works
out fine.

In the future we probably should redo the exit logic a bit so that all
the threads are actually stopped/joined to ensure the exit process is
consistent, however this is good enough for now. Also, there's plenty of
error states which call exit() which I did not address.
2022-11-29 20:04:54 -05:00
Matthew Kilgore 6c288ecb6f Don't compile libqb.cpp as Objective-C on Mac OS
With the recent changes to libqb.cpp to pull out some of the GLUT logic,
the only actual Objective-C in libqb.cpp was pulled out. That being the
case, it's no longer necessary to have libqb.mm for compiling libqb.cpp,
so we're removing it to simplify the compliation logic a bit.
2022-11-29 20:04:54 -05:00
Matthew Kilgore 72193e34e5 Add GLUT command queue, processed on GLUT thread
This fixes all the code so that all the calls to glut functions
happen on the same thread that is running GLUT.

We achieve this by creating a queue of GLUT commands to execute.
Commands can be added to the queue anywhere in the code, and then the
queue is processed on the GLUT thread via it's idle func or timer func.
The command is run and if necessary the result is provided in the
message queue object. Each object contains a completion which can be
waited on to block until the GLUT thread has processed the command.

Fixes: #66
2022-11-29 20:04:54 -05:00
Matthew Kilgore d678be717c Move GLUT initialization logic into separate .cpp file 2022-11-29 20:04:53 -05:00
Samuel Gomes 0e19bcc03c
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-28 08:29:33 +05:30
github-actions[bot] e12b13eebf Automatic update of ./internal/source 2022-11-27 21:41:39 +00:00
Samuel Gomes d13bf35822
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-28 01:05:07 +05:30
github-actions[bot] 6547bed5e0 Automatic update of ./internal/source 2022-11-27 19:32:17 +00:00
Samuel Gomes 93bf793c19
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-27 10:58:57 +05:30
github-actions[bot] dbd18aeae1 Automatic update of ./internal/source 2022-11-27 04:55:10 +00:00
Matt Kilgore 8185234792
Merge branch 'main' into fix-glut-init-logic 2022-11-26 22:42:46 -05:00
github-actions[bot] 715bfd3682 Automatic update of ./internal/source 2022-11-27 03:36:50 +00:00
github-actions[bot] a8cc180307 Automatic update of ./internal/source 2022-11-27 02:24:41 +00:00
github-actions[bot] 3cba0d4265 Automatic update of ./internal/source 2022-11-27 00:30:08 +00:00
Roland Heyder ec6e648007 Simplify #include
Solving #119
2022-11-27 00:11:04 +01:00
github-actions[bot] 28dc80b551 Automatic update of ./internal/source 2022-11-26 09:13:26 +00:00
Matthew Kilgore d2aa572a94 Fix GLUT initialization logic
The current GLUT initialization logic is flawed because it allows the
QB64 code portion of the program to start on a separate thread at the
same time that the GLUT code is starting. This results in a race where
some commands won't work for a brief period at the beginning of the
program (with "won't work" being very inconsistent, some return invalid
values, some have a chance at seg faulting).

The same issue also leads to us adding many `while (!window_exists)`
checks in an attempt to solve this race for some of the commands.
Unfortunately this solution is very inconsistently applied leading to
some deadlock situations, and really it's a silly solution when this
race is entirely our creation anyway.

To fix this, the logic was changed such that we perform all of the GLUT
initialization besides calling `glutMainLoop()` before we ever start the
thread that runs the actual QB64 code. By doing it this way we ensure
that the GLUT initialization has already taken place before the code
runs and thus the race is gone.

Things get a bit more interesting with $SCREENHIDE, because that simply
delays the execution of the GLUT initialization indefinitely until
_ScreenShow is done. This was previously very buggy since some commands
rely on FreeGLUT being up and will simply hang the entire program if
run. Other commands have logic to catch this and simply return zero.

The above issue is solved with the `NEEDS_GLUT()` and `OPTIONAL_GLUT()`
macros. Both of them simply check if the GLUT initialization has taken
place and exit the current function if it has not. The difference
between the two is that `NEEDS_GLUT()` throws an 'illegal function call'
error while `OPTIONAL_GLUT()` simply exits with no error. The choice of
behavior of each function was based upon its previous behavior - if it
checked `screen_hide` and exited with no error previously, then
`OPTIONAL_GLUT()` was used. If it deadlocked or similar then
`NEEDS_GLUT()` was used (so instead of deadlocking, it now produces an
error). In this way, programs can now never get stuck due to the use of
`$SCREENHIDE` and all the commands have consistent behavior that can be
relied upon.

Fixes: #234
2022-11-26 01:33:32 -05:00
Samuel Gomes b29eaed459
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-26 07:59:30 +05:30
Samuel Gomes fe65031433
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-25 11:24:02 +05:30
SteveMcNeill ca7d6ee289 fix comment
Whoops!  Not enough coffee, I guess.  ;)
2022-11-25 00:52:29 -05:00
SteveMcNeill 0d76a7bbed Simplify multi-line logic to single line. 2022-11-24 15:00:54 -05:00
SteveMcNeill 6d055e5df1 Bugfix to _FONT
Fonts 9, 15, and 17 can *only* be used in SCREEN 0.  Attempting to use them in graphic screens results in a seg fault and an instant program crash on Windows.  This is definitely the most undesirable of behaviors for a program, and can easily be caught and dealt with just by tossing a simple "Illegal Function Call" error for the issue.
2022-11-24 08:34:31 -05:00
github-actions[bot] 9d3ca747d0 Automatic update of ./internal/source 2022-11-24 12:38:54 +00:00
Samuel Gomes 50c1430456
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-24 07:17:04 +05:30
Matthew Kilgore c84220055f Add FreeGLUT warning function
Registering a warning function keeps FreeGLUT from writing warnings to
the console (which is not desirable since it conflicts with our own
console output).
2022-11-22 23:53:04 -05:00
github-actions[bot] cff575e722 Automatic update of ./internal/source 2022-11-22 23:53:31 +00:00
Matthew Kilgore 11a5b8be8e _OpenClient() should return zero on connection failure, not error 2022-11-20 18:44:24 -05:00
Matthew Kilgore 445408d95b _StatusCode() should give the correct error on invalid handle type
Passing a handle of the invalid type (Ex. TCP) to _StatusCode should
give error 52, but it gies error 9.
2022-11-20 04:38:03 -05:00
Matthew Kilgore 12c9c35db5 Add _StatusCode command for HTTP handles
The _StatusCode command returns the status code on the HTTP response
when given a HTTP handle from _OpenClient().
2022-11-20 04:04:02 -05:00
Matthew Kilgore ffdf9db390 Add libqb.cpp stream support for HTTP
Modifies libqb.cpp to add support for opening HTTP connections via
_OPENCLIENT(). This makes use of the libqb_http API in ./libqb, which is
backed by libcurl.

This also includes a bit of refactoring for some of the code that
required additions. I replaced a few of the integer values with enums,
and added a new entry for Http and then implemented it in all the
necessary locations. In addition to `_OPENCLIENT()`, there is also
support for using HTTP connections with `EOF()`, `LOF()`, `GET #`
(variable and fixed length), and `CLOSE`.

I additionally fixed an issue of parsing the colon parts of the
`_OPENCLIENT()` parameter, where having too many colons would cause the
program to crash. Since we only allow so many parts to begin with it I
simply limited the max number of parts it will split to 10.

Fixes: #98
Fixes: #46
2022-11-19 15:13:26 -05:00
Matthew Kilgore 45d52271da Add libqb_http API for HTTP connections
This adds the libqb_http API, which is designed to support HTTP and
HTTPS usage from QB64-PE source.

The design consists of a single thread which services all the HTTP(s)
connections. There are then various libqb_http APIs exposed that allow
interacting with this thread to create a new connection, query
connection status, read data, or close the connection.

Internally the thread makes use of the curl_multi interface to allow a
single thread to service multiple HTTP(s) connections in parallel. This
means you can _OPENCLIENT() multiple HTTP connection in a row and all of
them will be serviced at the same time in whatever order data is
available.

HTTP is optional and selected via a Makefile setting. A stub is swapped
in if HTTP support is not used, which avoids need to add another build
flag to libqb.cpp.
2022-11-19 15:13:26 -05:00
Samuel Gomes 4c5072e0aa Enable PulseAudio on Linux 2022-11-18 10:46:58 +05:30
Matthew Kilgore 34a7df535e Add libcurl to the repository
This copy is used for building on Windows. For Linux and OS X we used
the system-provided copy.
2022-11-17 22:03:41 -05:00
Samuel Gomes bc522b8a80
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-16 11:56:05 +05:30
github-actions[bot] 5e3fa2d6c2 Automatic update of ./internal/source 2022-11-16 06:19:29 +00:00
github-actions[bot] de63331a19 Automatic update of ./internal/source 2022-11-16 04:41:13 +00:00
Samuel Gomes 96e2c92bd6
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-16 08:13:26 +05:30
Matthew Kilgore a28342be99 Fix password handling in _InputBox$ on Windows
We were incorrectly treating the empty string and NULL the same and
using a password dialog for both. It now has the correct behavior of
displaying the password when provided the empty string, but just
displaying a blank input box when provided NULL.
2022-11-14 20:23:41 -05:00
Samuel Gomes 5cefba8609 Merge branch 'miniaudio-fixes' of https://github.com/a740g/QB64pe into miniaudio-fixes 2022-11-14 23:46:22 +05:30
Samuel Gomes ea80bddd51
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-14 23:33:25 +05:30
Matthew Kilgore e6964dfc69 Include stdint.h on Windows, change integer defines to use them
It seems we weren't including stdint.h on Windows by mistake. Likely we
were getting it anywy from some other header, but it sounds like that
got changed in newer versions of MinGW and either way we shouldn't rely
on that.

Being that we include stdint.h on all platforms, I also changed os.h to
always use these types when defining the `int32` and friends sized
types. Ideally we get rid of those defines in the future but we can at
least use the stdint.h types going forward (as we already have).
2022-11-12 19:48:26 -05:00
Matthew Kilgore 1509f85719 Improve _InputBox$ support on Windows
This applies various dialog settings so that the dialog is always on
top, and also so that Tab works as expected to move between the
controls. The Edit control is moved first so that it's focused when the
window appears.
2022-11-12 19:48:17 -05:00
Matthew Kilgore 3f709ba65b Add logic to correctly discover our process's Window
Currently we have two different ways of determining what Window handle
to tie our dialogs too - we either use GetForegroundWindow(), or create
a completely new and hidden handle. The associated window determines
what process names shows up on notifications, and also which window
can't be interacted with while a dialog is open.

Both of those approaches aren't really good. In the case of
GetForegroundWindow(), it just returns whatever window the user has in
focus, which might be a completely different process. With the hidden
window, it means the dialog and notification aren't really tied to the
QB64-PE program, so you can still interact with the window even when a
dialog is open, and the notification doesn't show an exectuable name.

To solve this we're now using EnumWindows() to enumerate over all the
Windows on the system and find one associated with our ProcessId. We
then check if it's the top-level window and return it if it is.

If that process fails to find a window (such as if this is a
console-only program, or $SCREENHIDE is used) then we check if
GetConsoleWindow() gives us a handle and use that.

If neither approach works, then we fall back to creating a hidden window
so that the dialogs can still work.
2022-11-12 19:16:43 -05:00
Samuel Gomes 7c2f709b7e Change blockSampleFrames for reduced latency 2022-11-11 18:50:59 +05:30
Samuel Gomes 2a5e2e8add Add O2 by default due to resampling code in audio 2022-11-10 18:48:41 +05:30
Samuel Gomes ae35e596b4
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-10 07:27:37 +05:30
Matt Kilgore a85f10e35c
Merge branch 'main' into paint-fill-fix 2022-11-08 21:55:53 -05:00
Samuel Gomes 28bdc23ce3
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-08 23:54:25 +05:30
Matthew Kilgore ac8aac39b7 Use signed type for xdelta and ydelta arrays
I accidentally declared these as uint32_t even though I store -1 in
them. It was working anyway due to the implicit conversion that happens
when adding it to an int32_t, but it should be fixed regardless.
2022-11-08 01:32:05 -05:00
Matthew Kilgore 4f5af8888e Fix PAINT when border color is not supplied
The border color parameter to PAINT is optional, but sub_paint was not
handling that case. What it should do in that situation is keep painting
until it finds pixels that are not the same color as the original
starting pixel was. Instead it would simply assume border color was
valid and paint until it finds color zero (the default parameter value
when it's not provided).

This was originally reported in QB64Official/qb64#2, and Walt
(@TheJoyfulProgrammer) fixed it in QB64Official/qb64#38. Functionally
this is the same change, however I'm checking `passed & 4` to see
whether a border color was provided rather than `bordercol == NULL`.
The later has problems if the provided bordercolor is zero, which is
allowed since zero is a valid color. The `passed` argument indicates
which of the function arguments were actually provided in the QB64
source that called PAINT.

Additionally, along with the `while (true)` loop that Walt changed I
went ahead and removed the duplication of the sections for each
direction. We now just use a couple of arrays to determine which
direction we're checking and loop over all 4.
2022-11-08 00:59:12 -05:00
Matthew Kilgore 90b3bd2662 Address build warnings on tinyfiledialogs.c
A function was made unnecessary but wasn't removed, triggering a
warning. Additionally gcc likes parenthesis around `=` assignments used
for conditions.
2022-11-08 00:49:13 -05:00
Matthew Kilgore 5b238467a9 Use hidden input if defaultText is blank
Fairly simple, this sets the ES_PASSWORD flag when the default text is
blank.

Additionally I fixed the dialog callback to correctly call EndDialog()
rather than DestroyWindow().
2022-11-08 00:49:13 -05:00
Matthew Kilgore 7bf68383d5 Fix warnings, remove unused code in tinyfiledialogs.c 2022-11-08 00:49:13 -05:00
Matthew Kilgore ee9f8e4404 Remove quote checks on Windows
These are the last of the quote checks, these don't require any
associated changes as the underlying Win32 functions already allow
quotes. They were simply added to keep parity with the functionality on
other platforms, that that has since been fixed.
2022-11-08 00:49:13 -05:00
Matthew Kilgore ec0ec10652 Add missing static to char array in tinyfd_openFileDialog
Fairly simple, lBuff is used to return the resulting filename and has to
be static so that it's still valid when the function exits.
2022-11-08 00:49:13 -05:00
Matthew Kilgore 0115029e5e Implement InputBox using DialogBoxIndirect
This removes the VBS based InputBox for Windows and replaces it with a
version that uses DialogBoxIndirect to create the dialog. While it is a
bit more complicated in some respects, it removes any concerns about the
contents of the strings as they're no longer being inserted into the
generated script.

It also has the advantage that it doesn't spawn another process (which
then shows up in the task bar in some situations).

With this changes quote characters are allowed in all of the parameters.
2022-11-08 00:49:13 -05:00
Samuel Gomes 839e1479a0
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-08 07:56:40 +05:30
Matthew Kilgore f73a1da97d Fix osascript escaping on Mac OS
Escaping the osascript commands requires two layers of escaping: One for the
script itself, and one for the sh arguments.

For the script itself, we simply have to escape the " character with \". When
then take the result of that and escape it sutably for sh arguments in single
quotes. We already have a function for that so we simply call that to do the
job.
2022-11-07 02:43:29 -05:00
Samuel Gomes e9905d6cd0
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-07 00:16:25 +05:30
Matthew Kilgore b20aade638 Swap NotifyPopup to use Shell_NotifyIcon
Fairly straight forward, the Powershell code was fundimentally just
calling Shell_NotifyIcon under the covers which we can easily do
ourself. The notification has to be tied to a window, so I simply create
a hidden one to use.

A nice improvement here is that instead of having to use the Powershell
icon we can make use of the EXE icon if one was provided. If one is not
provided then we use the default 'application' icon.
2022-11-06 01:08:36 -04:00
Samuel Gomes 8f405ecde7
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-05 22:45:41 +05:30
Matthew Kilgore c945214cb8 Fix quoting of arguments to dialog functions on Linux
tinyfiledialogs had lots of issue surounding the quoting of the
arguments to the dialog functions. The arguments are effectively placed
verbadim into shell commands, and without any proper treatment they
would get accidentally evaluated by the shell, which is a big problem.
Additionally, any arguments containing quotes would just not work since
they would screw up the underlying shell command.

This change fixes all that for Linux. Every argument to the dialog
functions is now surrounded in single quotes, which prevents any
evaluation of the string by the shell. Additionally, because this is
standard the only chracters that need special treatment are the single
quote characters, and proper escaping for them has been added. The
result is that the dialog functions can now accept arguments that hvae
single and double quotes in them (on Linux).
2022-11-05 00:36:48 -04:00
Samuel Gomes f6c743e1f6
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-05 04:50:41 +05:30
github-actions[bot] 0d45ec4969 Automatic update of ./internal/source 2022-11-04 23:01:37 +00:00
Samuel Gomes d2cd85825f Update miniaudio to v0.11.11 2022-11-04 22:43:27 +05:30
Samuel Gomes 9a509cab61 Update miniaudio to v0.11.10 2022-11-03 18:11:20 +05:30
Matthew Kilgore 980d646317 Add back internal MessageBox function
Unfortunately InForm code calls this function directly via
`DECLARE LIBRARY`. For the moment we're adding it back in to keep those
programs functioning, in the future it may be removed.
2022-10-31 00:14:20 -04:00
github-actions[bot] e2d8fd6fa9 Automatic update of ./internal/source 2022-10-31 00:56:32 +00:00
Samuel Gomes 2f84616168 Fix _OPENFILEDIALOG$ to accept -1 for allowMultipleSelects& 2022-10-30 04:35:46 +05:30
Samuel Gomes 5c9766ce97 Update tinyfiledialogs to v3.8.9 2022-10-29 17:18:50 +05:30
github-actions[bot] 47ee4fb1ab Automatic update of ./internal/source 2022-10-25 04:53:56 +00:00
Samuel Gomes 7e533a2473 Update test license files 2022-10-25 07:28:35 +05:30
Samuel Gomes d14d688181 Fix IMAGE_GET_BGRA_... macros 2022-10-25 04:47:27 +05:30
Samuel Gomes a122331d6d Include stdarg.h in gui.h 2022-10-25 04:34:41 +05:30
Samuel Gomes 56c7936fb4 Address issues mentioned in #216 2022-10-25 04:24:01 +05:30
Samuel Gomes 6b60048d9e Simplify gui_tokenize() 2022-10-24 02:59:51 +05:30
Samuel Gomes fb00990bab Replace strtok with strtok_r 2022-10-24 02:09:55 +05:30
Samuel Gomes 6a74b3f487 Replace libqb alert, MessageBox & MessageBox2 with tiny file dialogs 2022-10-24 01:24:57 +05:30
Samuel Gomes 98e40c173d Fix common dialogs build.mk bug 2022-10-23 22:44:39 +05:30
Samuel Gomes 327d753206 Move qbs_new_txt_len() declaration to libqb.h 2022-10-23 18:23:35 +05:30
Samuel Gomes 93e58baa1d Common dialogs support 2022-10-23 12:57:02 +05:30
github-actions[bot] feb2b302d4 Automatic update of ./internal/source 2022-10-10 13:36:10 +00:00
github-actions[bot] e6a68b810c Automatic update of ./internal/source 2022-10-05 17:30:47 +00:00
Samuel Gomes a2e77d7557 Only change _SNDBAL stereo panning if x is passed. Mimic old OpenAL behavior. 2022-10-05 15:28:04 +05:30
Samuel Gomes 7e63a68407 Simplify sub__sndplaycopy 2022-10-05 06:31:46 +05:30
Samuel Gomes f49f8bdf06 Implement _SNDPLAYCOPY enhancement #185 2022-10-05 02:33:44 +05:30
github-actions[bot] bc1567089c Automatic update of ./internal/source 2022-10-02 22:25:45 +00:00
github-actions[bot] 70b4c1aa5d Automatic update of ./internal/source 2022-10-01 19:14:39 +00:00
github-actions[bot] 18f746018b Automatic update of ./internal/source 2022-10-01 17:41:56 +00:00
github-actions[bot] e93e389e03 Automatic update of ./internal/source 2022-09-30 16:21:22 +00:00
github-actions[bot] 2f509a192c Automatic update of ./internal/source 2022-09-24 17:47:06 +00:00
Samuel Gomes c0e3f3608c Add O2 to build.mk 2022-09-18 23:46:54 +05:30
Samuel Gomes fa0ba3e5d8
Merge branch 'main' into main 2022-09-18 14:49:58 +05:30
github-actions[bot] 8f16eb405d Automatic update of ./internal/source 2022-09-17 23:20:02 +00:00
Samuel Gomes 9681aa1d30 Update code to use C++ unordered_map 2022-09-18 00:03:08 +05:30
Matthew Kilgore aea4a6058e Fix linking audio when using $CONSOLE:ONLY
A quick fix, but providing `DEPENDENCY_CONSOLE_ONLY` when compiling
audio.cpp tells `common.h` to avoid pulling in `freeglut.h`, which fixes
the linking issue.

Fixes: #172
2022-09-17 03:06:24 -04:00
Samuel Gomes bb8bd56689 Merge branch 'main' of https://github.com/a740g/QB64PE 2022-09-17 08:53:38 +05:30
Samuel Gomes a100a434e4 Fix #175 2022-09-17 08:53:32 +05:30
github-actions[bot] 4c8dbec69c Automatic update of ./internal/source 2022-09-11 17:00:19 +00:00
Matthew Kilgore 84f1165776 Fix _MOUSEMOVE when window is resized
`sub__mousemove` is trying to use `x_scale`, `y_scale`, `x_offset`, and
`y_offset` to calculate where the mouse should be in the event the
window coordinates are different from the screen coordinates.

Unfortunately, all four of those variables are actually never set in the
program. The real scale values and offsets (in the event of
letterboxing) are stored in `environment_2d__` values. This change
switches `sub__mousemove` to simply use the correct values when
calculating the mouse position.

Because `x_scale` and `y_scale` are not used anywhere else I just
removed them completely. I wanted to remove `x_offset` and `y_offset` as
well but there are a few spots that make use of it. It must be a bug,
since they are never assigned values other than zero, but I'm not sure
if the correct fix for the other locations is to use the
`environment_2d__` value or do nothing, so I'm leaving them for now and
we can address them later.
2022-09-10 15:31:22 -04:00
Samuel Gomes 73f1b37c82
Merge branch 'QB64-Phoenix-Edition:main' into main 2022-09-10 09:51:51 +05:30
github-actions[bot] 39cd2bf3cf Automatic update of ./internal/source 2022-09-10 02:11:00 +00:00
Samuel Gomes 8425f117a7 Fix #169 & #170 2022-09-10 04:08:31 +05:30
github-actions[bot] ee00ce6a7f Automatic update of ./internal/source 2022-09-09 12:19:17 +00:00
Matthew Kilgore cd5e312f5a Revert changes to miniaudio.h, move changes elsewhere
Changing midiaudio.h will make it harder to incorporate new versions
into QB64-PE as they come out. To fix that I have reverted all the
changes to midiaudio.h and moved the few private parts we were using
into a separate 'filepath' API that's part of libqb.
2022-09-08 23:59:19 -04:00
Matthew Kilgore 3e4477521a fix audio midi vtable linking 2022-09-04 23:35:14 -04:00
Matthew Kilgore 2b3403745c Add initial MIDI language support
This adds MIDI support to the language as a new unstable feature. There
are two new metacommands that come with this:

$Unstable: Midi
$MidiSoundFont: [Default|"filename"]

The $Unstable command is required to be able to use any of the other
commands, and just signifies that this is not a full part of the
language yet and may change in breaking ways before the API is
finalized.

The $MidiSoundFont command enables MIDI support in the compiled program,
and also specifies what sound font to use to play MIDI files. "Default"
will make use of the soundfont placed at
'./internal/support/default_soundfont.sf2', and otherwise a filename can
be specified to use any soundfont wanted.

In either case, the selected sound font is compiled into the executable
and then loaded at runtime.

Fixes: #115
2022-09-04 23:35:14 -04:00
Samuel Gomes 184db340dc Merge branch 'main' of https://github.com/a740g/QB64PE 2022-09-04 05:16:45 +05:30
Samuel Gomes d3854630cf Fix usage of mem_block type in _MEMSOUND 2022-09-04 05:16:41 +05:30
github-actions[bot] dc0cf1e3d2 Automatic update of ./internal/source 2022-09-03 19:36:01 +00:00
Matthew Kilgore f03b55808b Remove DPI Awareness on Windows
DPI Awareness allows a program to tell Windows that it will handle
properly scaling itself for the screen's DPI. Thus when a program is DPI
Aware, it will always see the actual screen size. When a program is not
DPI Aware, then Windows will scale the program according to the
selection by the user, and the reported screen size will match the
scaled size rather than the actual screen size.

Commit 189cdb8e added logic to enable DPI Awareness on Windows, but it
was hidden behind a `WINVER` check. This meant it was not actually in
use because at the time QB64 did not set a `WINVER` high enough to
actually enable that code. As such all Windows versions of QB64
including v2.0.2 were not DPI Aware.

Much later-on, Commit 869e361e declared a `_WIN32_WINNT` of `0x0600`,
which seems to have also declared `WINVER` as the same and thus enabled
the DPI Awareness logic. As a consequence, QB64-PE programs no longer
get scaled even though they don't have a way to acquire the current DPI
to do proper scaling themselves.

Since the behavior change was unintentional and proper language support
is not there, we're considering the addition of DPI Awareness a bug. It
will be added back some time later with more language support to allow
it to be properly used.
2022-09-02 23:50:23 -04:00
github-actions[bot] 480e3c3d6e Automatic update of ./internal/source 2022-09-03 02:27:00 +00:00
Samuel Gomes f99eb27717 Remove all _SHR & _SHL changes 2022-09-01 16:15:42 +05:30
Samuel Gomes 5812433b9d Added limits.h to common.h 2022-09-01 07:25:01 +05:30
Samuel Gomes 2ed17f6198 Add _ROR & _ROL support. Fix issues with _SHR & _SHL 2022-09-01 06:51:06 +05:30
Matthew Kilgore 30c0634d20 Fix High-DPI awareness on Windows
We started defining `_WIN32_WINNT` a little while ago to express that we
require Windows Vista or above for support. This enables us to access
some Windows Vista-only APIs. The fact that `WINVER` also needs to be
defined was missed, and it seems that defining one means the other no
longer gets defined automatically as it did before. Thus we're simplying
now also defining `WINVER` the same as `_WIN32_WINNT`.

This fixes High-DPI awareness and a few other things that were gated
behind WINVER checks.
2022-08-28 21:44:07 -04:00
Samuel Gomes 26391445ee Updated comments 2022-08-28 02:16:56 -04:00
Matthew Kilgore 5bae6dadc4 Remove unnecessary help file 2022-08-28 02:16:56 -04:00
Samuel Gomes 124251f8f8 Fixed Linux compile issue - extra space in #include. Doh! 2022-08-28 02:16:56 -04:00
Samuel Gomes 9ed193346a Update QB64-PE image library to convert images to 8bpp 2022-08-28 02:16:56 -04:00
Samuel Gomes d3da6da2fa Simplified image library. Added PCX support using dr_pcx 2022-08-28 02:16:56 -04:00
github-actions[bot] 09f2546e35 Automatic update of ./internal/source 2022-08-27 20:50:21 +00:00
Matthew Kilgore c989be69f6 Disable MIDI support
This will be added back soon with with functionality to be able to
optionally enable it.
2022-08-27 14:27:55 -04:00
Matthew Kilgore 48208e2eda Change miniaudio build logic to always clean all files 2022-08-27 14:27:55 -04:00
Matthew Kilgore 41cc1e6569 Integrate the miniaudio backend into the build
This integrates the miniaudio backend, using a new `DEP_AUDIO_MINIAUDIO`
flag to enable it. This will allow consumers to choose which backend to
use.
2022-08-27 14:27:55 -04:00
Matthew Kilgore 481906977e Add a740g's miniaudio backend
This is a single commit adding all of a740g's audio backend. Later
commits will connect it together with QB64PE itself.
2022-08-27 14:27:55 -04:00
github-actions[bot] 1de7d29ba6 Automatic update of ./internal/source 2022-08-27 14:55:26 +00:00
github-actions[bot] 619f15157b Automatic update of ./internal/source 2022-08-26 14:13:09 +00:00
github-actions[bot] b453426b6b Automatic update of ./internal/source 2022-08-26 12:44:07 +00:00
github-actions[bot] 2de5fc24e0 Automatic update of ./internal/source 2022-08-18 23:36:41 +00:00
Roland Heyder 123f3d80ae Step 20: Lets try this...
- update make_dist.sh to download files from Phoenix homepage and moved befor clean as suggested.
- get rid of internal/help
2022-08-18 19:13:40 +02:00
Roland Heyder 38bb259c4c Step 19: Add more static _GL help pages 2022-08-17 00:33:42 +02:00
Roland Heyder 756eb6ac68 Step 12: Implement automatic help file update
- changes to update code (ignore static _GL pages as mentioned at Discord https://discord.com/channels/975381912350752819/975389657212805160/1007683254792507412 )
- dist script changes
- update internal/help to contain static _GL pages only
2022-08-12 22:54:59 +02:00
Roland Heyder 2ec897b75d Step 10: Update remaining stuff
- checks all remaining occurrences of the term 'qb64', some remain untouched, some are renamed according to context
- also added new logo for README.md
- this step does finalize the 'Phoenix Edition' re-branding
2022-08-12 02:54:12 +02:00
Roland Heyder e68582b6f2 Step 7: Rename qb64.exe to qb64pe.exe
- Includes related LNX/OSX files
- Excludes mentions in the help (*.txt) files
2022-08-11 18:07:57 +02:00
Roland Heyder 96fc1eb3a9 Step 5: Update embedded images in libqb.cpp
- replaced default icon image data, which is used, if _ICON is used w/o parameter, but no $EXEICON is specified either (see also Step 1)
- this step completes icon related changes
2022-08-10 20:02:00 +02:00
Roland Heyder 4dd8d8f5ec Step 4: Update Windows icon & resource file
- int/src/icon.ico (replaced image but same name, dynamically created from given $EXEICON)
- int/src/icon.rc (updated but same name, dynamically created from given $VERSIONINFO)
- int/src/qb64.ico and src/icon.rc removed (not used anymore since dynamic creation was implemented)
- src/qb64.bas updated (rename comes in a later step)
- src/qb64.ico replaced and renamed
2022-08-10 02:03:12 +02:00
Roland Heyder 9b4b7992d4 Step 2: Update Linux icon file
Replaced and renamed icon file and moved it into the regular source folder, adjusted references in setup_lnx.sh
2022-08-10 00:48:56 +02:00
Roland Heyder d1664a059a Step 1: Remove unused icon images
These two are not referenced/used anywhere in the source and/or make files. However, they are embedded in libqb.cpp, which comes later.
2022-08-09 23:55:15 +02:00
github-actions[bot] edd5867875 Automatic update of ./internal/source 2022-08-03 05:25:10 +00:00
Roland Heyder d01c8ed71b Updated plugin templates 2022-08-02 23:02:18 +02:00
Roland Heyder 6912727753 Update help files
Help file snapshot as of 07/31/2022.
2022-07-31 23:57:56 +02:00
github-actions[bot] 1efbfd03fe Automatic update of ./internal/source 2022-07-24 07:45:23 +00:00
github-actions[bot] 0a30c91d55 Automatic update of ./internal/source 2022-07-09 21:11:50 +00:00
github-actions[bot] 4e3873f420 Automatic update of ./internal/source 2022-07-09 18:48:23 +00:00
github-actions[bot] 9162e91ba6 Automatic update of ./internal/source 2022-07-06 16:10:33 +00:00
github-actions[bot] 7f14714b02 Automatic update of ./internal/source 2022-06-23 22:45:10 +00:00
github-actions[bot] 802f67d6cf Automatic update of ./internal/source 2022-06-15 05:28:32 +00:00
Matthew Kilgore 94c2b56b69 Use mutex guard in completion implementation 2022-06-14 23:58:04 -04:00
Matthew Kilgore 298331e490 posix mutex shouldn't allow NULL
We shouldn't allow mutex lock/unlock to silently do nothing if NULL is
passed, as that is very likely a bug. Beyond that the Windows version
doesn't do this, so it's inconsistent as well.
2022-06-14 23:56:17 -04:00
Matthew Kilgore 869e361ee4 Move QB64 compiler settings to libqb-common.h
This moves a lot of the preprocessor flags for what compiler/platform
we're using into a libqb-common.h header inside the libqb/include
folder. This gets included at the top of every libqb .cpp file, and is
intended to be fairly small, providing only necessary things like
_WIN32_WINNT (which needs to be defined before including <windows.h> or
friends).
2022-06-12 00:28:16 -04:00
Matthew Kilgore cde7afef30 Use libqb_mutex in libqb.cpp
libqb_mutex can replace the existing Mutex handling we do in libqb.cpp
2022-06-11 22:47:06 -04:00
Matthew Kilgore 4052b8cc19 Add append-only buffer API
The Buffer API implements an append-only buffer, where you can write to
the end or read from the beginning. Data that is read is discarded from
the buffer, and you can query the buffer to get the current amount of
data inside.

Internally the buffer API is implemented as a chain of separate buffers.
This is done to avoid having to resize the existing buffer, which is
expensive. We keep track of where the reading currently is, and discard
the internal buffers after all the data in them is read.
2022-06-11 22:47:06 -04:00
Matthew Kilgore ecfc71ef95 Add completion API
Completions are basically a oneshot flag, which provide a `wait()` call
that blocks until 'finish()' has been called on the completion.

The nice aspect of completions is that because it is a oneshot the order
does not matter - if 'finish()' is called before 'wait()' then 'wait()'
returns immediately. It makes the logic for waiting until a thread is
done finishing up some work easy to implement.
2022-06-11 22:47:06 -04:00
Matthew Kilgore 7ef15653fd Add generic thread, mutex, and condvar API
This adds generic APIs to libqb for handling thread's, mutex's, and
condition variables. On Linux and OSX these are implemented via the ones
provided by pthreads. On Windows they're implemented via the ones
provided by the Win32 API.

For compiling, the code itself is not conditional, but the Makefile
includes logic to decide which implementation to pick.

Note that it would have been nice to simply use std::thread and friends
from C++11, however using them on MinGW appears to be a bit messy. Since
using the Windows ones directly isn't that hard this was an easy compromise.
2022-06-11 22:47:06 -04:00
Matthew Kilgore eb815c4220 Prepare for separate libqb, define C++ standard
This sets up a few different flags we'll need for the conditional
compiling, and also sets the C++ standard to gnu++11, which effectively
just matches what we were implicitly using before.
2022-06-11 22:47:05 -04:00
github-actions[bot] df24714a49 Automatic update of ./internal/source 2022-06-12 02:46:10 +00:00
Matthew Kilgore 76c437288a Remove leftover build file 2022-06-11 20:42:23 -04:00
Matthew Kilgore f99407f251 Revert existing libqb split 2022-06-11 20:42:23 -04:00
github-actions[bot] e6a5d4744c Automatic update of ./internal/source 2022-06-11 16:32:22 +00:00
github-actions[bot] 7d06ff2400 Automatic update of ./internal/source 2022-06-10 21:39:18 +00:00
github-actions[bot] 85cdcb2249 Automatic update of ./internal/source 2022-06-10 20:16:55 +00:00
github-actions[bot] 3057adf4dd Automatic update of ./internal/source 2022-06-10 15:12:32 +00:00
Matthew Kilgore 62ec4ebdbd Fix compilation with DEP_DEVICEINPUT
The Makefile changes broke compiling with device input support. This got
missed because no test case for DEP_DEVICEINPUT got added.

Fixes: #100
2022-06-09 21:30:37 -04:00
github-actions[bot] 578268e3a5 Automatic update of ./internal/source 2022-06-08 14:08:37 +00:00
github-actions[bot] 2be869c263 Automatic update of ./internal/source 2022-06-07 21:38:41 +00:00
github-actions[bot] 931d3f5f24 Automatic update of ./internal/source 2022-06-07 16:46:41 +00:00
github-actions[bot] 3816f39bb9 Automatic update of ./internal/source 2022-06-04 10:44:40 +00:00
github-actions[bot] 54f77c2884 Automatic update of ./internal/source 2022-06-01 00:20:31 +00:00
github-actions[bot] c240a71186 Automatic update of ./internal/source 2022-05-31 03:52:23 +00:00
github-actions[bot] fd3cf1ab9f Automatic update of ./internal/source 2022-05-23 04:59:49 +00:00
github-actions[bot] b2226bfe4d Automatic update of ./internal/source 2022-05-22 10:09:52 +00:00
Roland Heyder 77642ba91b Merge branch 'main' into wiki-dev 2022-05-22 01:04:02 +02:00
github-actions[bot] 88ff173309 Automatic update of ./internal/source 2022-05-21 23:02:30 +00:00
Roland Heyder bec7e9cdf4 Merge branch 'main' into wiki-dev 2022-05-21 00:23:32 +02:00
Roland Heyder aeb9c0668b Updates help files for use with new Wiki parser (2nd try)
Note: Many files were removed (not yet existing/empty pages). The parser will try to download them on demand and will auto-generate text for missing pages (eg. most _gl pages).
2022-05-21 00:18:31 +02:00
Roland Heyder df867d5654 Updates help files for use with new Wiki parser
Note: Many files were removed (not yet existing/empty pages). The parser will try to download them on demand and will auto-generate text for missing pages (eg. most _gl pages).
2022-05-20 23:56:53 +02:00
github-actions[bot] 15622d1f0c Automatic update of ./internal/source 2022-05-20 21:50:26 +00:00
Matthew Kilgore fc7c48bb29 Remove unnecessary files from ./internal/source
searched.bin was added in error and should not show up when updating
./internal/source.

The symbol files are useless since the coresponding executable is not
something we preserve, and due to them changing practically every build
they result in unnecessary updates of ./internal/source
2022-05-20 16:58:18 -04:00
Matthew Kilgore 95c57c182c Supply a default version label when no version has been calculated
When building directly from the repo (either from a git clone or a
download of the zip of the repository) the version reported is very
misleading because it will not have a version label, suggesting it is
actually a 'release' version when in fact it could be anything.

The ./.ci/calculate-version.sh logic is already setup to delete an
existing ./internal/version.txt during a detected release build, so we
can just place one in the repositroy and it won't impact the versioning
of CI and release builds, but will show up when building locally.

Fixes: #63
2022-05-20 16:57:45 -04:00
github-actions[bot] 6fde9c6b5f Automatic update of ./internal/source 2022-05-19 13:49:23 +00:00
Matthew Kilgore 437cfc3ab7 Remove old build system
Mostly old build scripts and helper files that are now covered by the
Makefile.

A notable deletion is the glew dll and lib files. These are unnecessary
because we compile `glew.c` directly rather than link against the dll or
lib copies we have.
2022-05-19 09:17:13 -04:00
Matthew Kilgore e0ef818522 Change purge scripts to use make clean 2022-05-19 09:17:13 -04:00
github-actions[bot] b7f05e73ff Automatic update of ./internal/source 2022-05-18 16:50:57 +00:00
Steve McNeill da1978915a
Merge branch 'main' into main 2022-05-18 12:14:17 -04:00
github-actions[bot] 306994663e Automatic update of ./internal/source 2022-05-18 14:36:18 +00:00
SteveMcNeill bd3b673996 test change to IdeAddSearched 2022-05-18 07:10:59 -04:00
github-actions[bot] 0c19b70a1b Automatic update of ./internal/source 2022-05-18 09:42:56 +00:00
github-actions[bot] b44bd54db9 Automatic update of ./internal/source 2022-05-17 11:59:50 +00:00
SteveMcNeill ecfa18a109 change numerics to more descriptive constants 2022-05-17 05:04:41 -04:00
SteveMcNeill 8574c1f921 Change to _screenwidth and _screenheight
Having windows call GetSystemMetrics without relying on glutGet, gets rid of the seg fault that can occur at program start up.  screenicon was restored to it's previous state so that larger issues with it can be addressed at a future date.
2022-05-16 11:37:58 -04:00
SteveMcNeill acbeca81b9 Fix to _desktopwidth, _desktopheight, _screenicon
Fixes the issue as brought up on the forums here: https://qb64phoenix.com/forum/showthread.php?tid=408

Also added a small set of logic so we don't end up inside an endless loop if the screen is hidden (via _SCREENHIDE), or if it doesn't exist for whatever reason.
2022-05-16 07:55:08 -04:00
github-actions[bot] 4ad1816507 Automatic update of ./internal/source 2022-05-15 20:28:21 +00:00
Matthew Kilgore 8c0fc1b3d2 Fix quoting in Windows-specific files
This issue was fixed in 4d61ff79, but due to how ./internal/source is
updated the new ./internal/source files were compiled using a QB64
without the fix, producing files with the wrong quoting. Previously this
was worked around because the build process overwrote these files, but
the `Makefile` build requires them to be fixed.

./internal/source itself is fine, so it's easy enough to simply fix the
files by hand. Since ./internal/source now contains a compiled QB64 that
contains the fix from 4d61ff79 it's generated files will have proper
quoting and won't need to be manually updated.
2022-05-14 17:09:02 -04:00
github-actions[bot] c3cd310f72 Automatic update of ./internal/source 2022-05-14 20:59:49 +00:00
Matthew Kilgore 7a5ca0c49c Cleanup unused Makefile stuff 2022-05-14 12:13:00 -04:00
Matthew Kilgore 75e96dba8d Fix quoting in ./internal/source/ files 2022-05-12 00:54:24 -04:00
Matthew Kilgore 5c4dcdc8aa Use dlfcn.h on OSX 2022-05-12 00:21:02 -04:00
Matthew Kilgore c1639b3979 Add basic make build system 2022-05-12 00:21:02 -04:00
github-actions[bot] 7c324a6aec Automatic update of ./internal/source 2022-05-08 00:30:36 +00:00
Matthew Kilgore fcec53e55b Fix text wrapping on last column with variable width fonts
Currently there is a bug where if a variable width font is in use and
text printed would exactly fit to the end of the row, it is instead
wrapped and printed on the next line.

Ex. You're printing a character that is 10 pixels wide, starting
from position 90 on an image that is 100 pixels wide. This should fix,
but instead your character will be printed on the next line.

The reason this happens is an off by one error, cursor_x (effectively
the X value passed to LOCATE) is one based even when using a variable
width font where cursor_x represents a pixel location. The location that
check if the next character can fit on the screen never handles the base
one, so it ends up treating the ending Y coordinate as one past where it
will actually end, which makes the code thing the print will go past the
edge of the screen.

To fix we simply subtract one before doing the comparison to give us the
actual ending pixel column.
2022-05-06 17:50:07 -04:00
github-actions[bot] 68281608f3 Automatic update of ./internal/source 2022-05-06 20:54:54 +00:00
github-actions[bot] 25ab5b92f7 Automatic update of ./internal/source 2022-05-06 18:13:57 +00:00
Matthew Kilgore 55da5f4ce3 Format other various source files 2022-05-06 13:20:30 -04:00
Matthew Kilgore 1aa8d7a42f Run clang-format on ./internal/c/*cpp files 2022-05-06 13:20:30 -04:00
Steve McNeill 7b6b5c4dde
Merge branch 'main' into main 2022-05-03 09:59:47 -04:00
SteveMcNeill 50eb90f885 Update LodePNG library
from 2012 version to 2022 version, which has been quite improved and sped up.
2022-05-03 02:33:45 -04:00
github-actions[bot] 87ee36daf2 Automatic update of ./internal/source 2022-05-03 06:32:16 +00:00
github-actions[bot] 9daea697b6 Automatic update of ./internal/source 2022-04-28 17:22:32 -04:00
Matthew Kilgore 77aced1b1c Rewrite distribution logic, download mingw*.exe 2022-04-28 17:21:56 -04:00
SteveMcNeill aed82b4979 $Color fix with $NoPrefix
There's no need for all colors to end up with a new prefix for use between $COLOR and $NOPREFIX.
The only conflicts we have are with _Red, _Green, _Blue, so this fix appends a NP_ to the front of the those three color names so they won't conflict with the command names.  (NP_ for NoPrefix_)
2022-04-28 17:20:45 -04:00
Matthew Kilgore 9315646e76 setup_win.bat: create internal/c/c_compiler
internal/c/c_compiler no longer contains anything, so git will not
create it. This change makes setup_win.bat create the directory if it's
not already there.
2022-04-28 17:15:35 -04:00
Matthew Kilgore 6568de7895 Remove unnecessary source files 2022-04-28 17:05:43 -04:00
Matthew Kilgore 97240a0b46 Add standalone mingw32 and mingw64 installers 2022-04-28 13:43:09 -04:00
Matthew Kilgore fbc580c9c5 Delete Mingw32 and Mingw64 2022-04-28 13:42:59 -04:00
SteveMcNeill 75a3eeec45 add default QB64_Help_Menu.txt 2022-04-28 13:42:00 -04:00
SteveMcNeill 420b45892b Adding more missing files back 2022-04-28 13:40:28 -04:00
SteveMcNeill 33adc04fc4 Add temp folder to repo. It's necessary as well!
Just more initial setting on... nothing much to see here.
2022-04-28 13:39:56 -04:00
SteveMcNeill 218c6124a5 Update QB64 to use new wiki
Along with a few files which may not be necessary, and should be excluded from the automated build process once its set up later.
2022-04-28 13:39:27 -04:00
Autobuild Process 242f8747de Update internal/source 2022-03-10 16:07:42 +00:00
Autobuild Process 88505bea87 Update internal/source 2022-03-10 13:33:35 +00:00
Autobuild Process 2a48f3c7e0 Update internal/source 2022-03-10 04:52:17 +00:00
Fellippe Heitor dfa4998b6b Revert "Update internal/source"
This reverts commit 8f9856705d.
2022-03-01 22:46:23 -03:00
Autobuild Process 8f9856705d Update internal/source 2022-03-02 01:41:40 +00:00
Fellippe Heitor 6f9059d6fb Revert "Update internal/source"
This reverts commit 9f095a1224.
2022-03-01 22:37:54 -03:00
Autobuild Process 9f095a1224 Update internal/source 2022-03-02 01:13:03 +00:00
Autobuild Process 78e6f4a788 Update internal/source 2022-03-01 23:52:55 +00:00
Autobuild Process a6fafc49bc Update internal/source 2022-02-25 02:00:27 +00:00
Autobuild Process ab5b96cc7a Update internal/source 2022-02-24 21:45:34 +00:00
Autobuild Process cd78160b44 Update internal/source 2022-02-23 04:34:23 +00:00
Autobuild Process 617bedb3b9 Update internal/source 2022-02-23 02:55:26 +00:00
Fellippe Heitor 7bad19cb94 Update vwatch.bm so qb64.bas can be debugged 2022-02-22 23:39:00 -03:00
Autobuild Process 38c5fcc83d Update internal/source 2022-02-13 12:57:23 +00:00
Autobuild Process d397cf69d9 Update internal/source 2022-01-24 01:29:53 +00:00
Autobuild Process dc92378825 Update internal/source 2022-01-24 01:16:21 +00:00
Autobuild Process ad9255a5c9 Update internal/source 2022-01-20 23:16:13 +00:00
Autobuild Process c69160584b Update internal/source 2022-01-19 00:31:52 +00:00
Autobuild Process 4afb8f7531 Update internal/source 2021-11-06 20:58:58 +00:00
Autobuild Process 81da1b9beb Update internal/source 2021-11-05 04:51:26 +00:00
Kit 72126a1289
Make $NOPREFIX-friendly versions of $COLOR includes (#206)
* Create `$NOPREFIX`-friendly version of `color0.bi`

* Create color32_noprefix.bi

* add conditional for noprefix $color

* oh. it was that easy?

* Update CHANGELOG.md

* Update help files [ci-skip]

Co-authored-by: all-other-usernames-were-taken <74026992+all-other-usernames-were-taken@users.noreply.github.com>
2021-11-05 01:46:28 -03:00
phillvancejr 8f0c08e2ec Added global scope operator :: to the socket bind call to prevent clashes with <functional> std::bind in some builds 2021-11-01 10:21:16 -04:00
Roland Heyder c48bf6776e Fixed LOC function for files
Will correctly return zero (0) now for just opened but yet untouched files.
2021-10-22 23:51:48 +02:00
Autobuild Process a97311bfbc Update internal/source 2021-10-18 03:13:30 +00:00
Fellippe Heitor 0fac593dd6 Update libqb.cpp to allow manual compilation in WinXP
Oh, well... there's still life for XP.
2021-10-17 03:56:54 -03:00
Autobuild Process 4268f4457e Update internal/source 2021-10-17 04:34:48 +00:00
FellippeHeitor 45fed463da Fix $Debug in Windows versions prior to 10 2021-10-17 01:51:28 -02:00
FellippeHeitor 56aa5e7e53 Try harder to return window_handle 2021-10-16 23:08:13 -03:00
Autobuild Process f1e4265d6c Update internal/source 2021-10-14 05:32:36 +00:00
Roland Heyder ce3c459dad Implements the _Bin$ function
Usage is analog to the legacy OCT$ and HEX$ functions.
2021-10-14 00:17:35 +02:00
Autobuild Process 6c79051d46 Update internal/source 2021-10-13 13:52:12 +00:00
Autobuild Process bf6376457d Update internal/source 2021-10-12 04:47:19 +00:00
Autobuild Process 5d925d508a Update internal/source 2021-10-10 02:16:15 +00:00
FellippeHeitor 2974a94cff Update help page for [ci-skip] 2021-10-09 22:22:12 -03:00
FellippeHeitor 0c99b7ddc4 Update help files [ci-skip] 2021-10-09 14:39:20 -03:00
FellippeHeitor ba9f0ec3c6 Update help files [ci-skip]
Removed broken _GL command list
2021-10-09 14:29:36 -03:00
FellippeHeitor 11a6422926 Update help file [ci-skip] 2021-10-09 14:06:54 -03:00
Autobuild Process 85f4701737 Update internal/source 2021-10-04 03:27:49 +00:00
Fellippe Heitor ab1f20eb3b Allow PRINT to show content in console even without a new line
Closes #74
2021-10-04 00:17:21 -03:00
Autobuild Process efd6d41ac1 Update internal/source 2021-10-02 07:24:31 +00:00
Autobuild Process df4dbb2b33 Update internal/source 2021-10-01 01:44:16 +00:00
FellippeHeitor 8d9cd83f6a Prevent errors when doing internal lbound/ubound checks 2021-09-30 22:40:57 -03:00
Autobuild Process ab17b336d9 Update internal/source 2021-09-30 04:25:24 +00:00
FellippeHeitor 1a3f3f5ad1 Add binary name to error message dialog; closes #157 2021-09-29 23:25:47 -03:00
FellippeHeitor 69444a6864 Allow "quotes" around watchpoint string conditions 2021-09-29 22:08:02 -03:00
Autobuild Process d525c5b751 Update internal/source 2021-09-28 07:20:23 +00:00
Fellippe Heitor 049499c333
Update clear.txt to fix compilation on macOS 2021-09-28 04:17:02 -03:00
Autobuild Process fd741ec203 Update internal/source 2021-09-28 07:06:00 +00:00
Autobuild Process 7d9b73a5df Update internal/source 2021-09-28 06:42:05 +00:00
FellippeHeitor 6befb6faa0 Fix how _FLOAT is dealt with ($Debug).
Turns out QB64 promises to store all _FLOATs using 32 bytes.
I imagine that is how Galleon planned for eventually storing
larger floating point numbers, but, as it's been observed,
_FLOAT are actually `long double` variables, so they take up
16 bytes. This not a problem for regular variables, but it
does take a toll for arrays, as values are actually stored
as a sequence of 16-byte numbers.

This patch is a hack. But so is FLOAT right now.
2021-09-28 03:38:24 -03:00
Autobuild Process 5d480b631d Update internal/source 2021-09-28 05:43:25 +00:00
FellippeHeitor 765b77c9bb Fix watchpoints for fixed-length strings in UDTs. 2021-09-28 01:52:16 -03:00
FellippeHeitor 602a32d3ba Fix watchpoints for strings in UDTs. 2021-09-28 01:24:30 -03:00
Autobuild Process 8723f87ff3 Update internal/source 2021-09-26 02:23:37 +00:00
Fellippe Heitor 8096dff858
Fixes #187. [ci-skip]
Don't exit if missing speakers when using SOUND/BEEP.
2021-09-25 23:18:28 -03:00
Fellippe Heitor 4995175a16
Exits if without dev or ctx. 2021-09-25 23:15:12 -03:00
Autobuild Process e187336713 Update internal/source 2021-09-25 03:41:17 +00:00
FellippeHeitor a157eb5f30 Switches focus to the IDE when an error is trapped. 2021-09-24 00:59:11 -03:00
KindOne 4e91e559dd
Don't exit if missing speakers when using SOUND/BEEP. 2021-09-23 00:57:49 -04:00
Autobuild Process 0888c26bd0 Update internal/source 2021-09-22 02:21:43 +00:00
FellippeHeitor 5cab1880b5 Uses GetLogicalDrives() in Windows (file dialogs). Closes #183 2021-09-21 02:54:41 -03:00
FellippeHeitor f680e6bda0 Minor fix in vwatch.bm (signed vs unsigned) 2021-09-20 22:52:19 -03:00
Autobuild Process c205a9776d Update internal/source 2021-09-21 01:09:49 +00:00
FellippeHeitor 3e498df414 Fixes watching/sending values for _BIT arrays. 2021-09-20 22:04:24 -03:00
Autobuild Process caca440492 Update internal/source 2021-09-20 01:33:34 +00:00
Autobuild Process 9916c370f7 Update internal/source 2021-09-19 23:10:34 +00:00
Autobuild Process 4d94cc56d8 Update internal/source 2021-09-19 02:35:44 +00:00
Fellippe Heitor d651f37bc2
Implements Watchpoints
Merges Debug mode branch
2021-09-18 23:32:33 -03:00
FellippeHeitor 3be8a806f8 Fixes watchpoints for strings 2021-09-18 19:30:55 -03:00
FellippeHeitor ce16f79f04 Improves visual indication of existing watchpoints. 2021-09-18 16:35:14 -03:00
FellippeHeitor a67dccae5b Allows setting watchpoints regardless of scope.
Adds "Clear Watchpoint" functionality.
Allows watching more than one array index/element.
2021-09-16 22:49:43 -03:00
FellippeHeitor 833e28aaf3 Removes test print lines. 2021-09-16 00:40:07 -03:00
FellippeHeitor 926b631f3b Implements watchpoints. 2021-09-16 00:04:20 -03:00
Autobuild Process 1d5d2e8f3f Update internal/source 2021-09-14 14:15:34 +00:00
Ashish Kushwaha 8e69e8cf3b allow 'move' to treated as 'cycle' for _mouseshow 2021-09-14 19:37:08 +05:30
Ashish Kushwaha 0f1dbed8e3
Merge branch 'QB64Team:development' into development 2021-09-12 19:21:01 +05:30
Autobuild Process ffd5f9a795 Update internal/source 2021-09-12 02:03:33 +00:00
Autobuild Process 1a92e9b318 Update internal/source 2021-09-11 01:22:31 +00:00
Autobuild Process 59dd67c74d Update internal/source 2021-09-10 04:26:50 +00:00
FellippeHeitor 17a116b19d Adapts "Send Value" to work with multiple array dimensions. 2021-09-09 20:34:04 -03:00
FellippeHeitor 357178652b Calls _KEYCLEAR before moving on with the debuggee.
In order to prevent unwanted keypresses eventually entered while in pause mode.
2021-09-09 00:35:51 -03:00
FellippeHeitor a37e3801d8 Adds support to watching arrays with multiple dimensions. 2021-09-08 22:48:03 -03:00
FellippeHeitor a02243455b Merge branch 'development' into watch-arrays 2021-09-04 23:57:22 -03:00
FellippeHeitor 7ba11565a5 Adds GetBytes so it's easier to add data to the packet ($DEBUG). 2021-09-03 00:03:28 -03:00
chlorophyll-zz fcb714133b
Update libqb.h
this fixes PR #185
2021-09-02 14:45:10 +02:00