1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-04 04:50:22 +00:00
Commit graph

1369 commits

Author SHA1 Message Date
Samuel Gomes efbd16b19c Remove legacy openal headers from libqb.cpp 2023-09-22 08:41:45 +05:30
Samuel Gomes efacfa37a3
Merge branch 'QB64-Phoenix-Edition:main' into openal-backend-removal 2023-09-22 07:58:47 +05:30
github-actions[bot] ad6b7ae75a Automatic update of ./internal/source 2023-09-21 23:37:55 +00:00
Samuel Gomes 7c17161d00 Remove legacy audio code 2023-09-21 19:52:10 +05:30
Samuel Gomes b40edfbd9b Avoid rendering filled background color boxes when _KEEPBACKGROUND is set 2023-09-21 07:52:07 +05:30
Samuel Gomes 4f004c117b
Merge branch 'main' into audio-enhancements 2023-09-21 01:13:54 +05:30
github-actions[bot] 4aa4a3eba2 Automatic update of ./internal/source 2023-09-20 19:42:36 +00:00
Samuel Gomes 66c3a7734b Minor cleanup 2023-09-20 20:39:56 +05:30
Samuel Gomes 45e5a24f88 Add HDR format support to _SAVEIMAGE 2023-09-20 20:32:29 +05:30
Samuel Gomes fcb7afceeb Fix cannot initialize a parameter of type 'size_t *' with an rvalue of type 'ma_uint64 *' 2023-09-19 09:12:00 +05:30
Samuel Gomes 052d184ee7 Implement QOI datasource 2023-09-19 07:44:46 +05:30
Samuel Gomes 37c17c78f6 Remove GPL xbr.hpp and update all license info 2023-09-19 02:07:57 +05:30
Samuel Gomes 7d620c777b Use better png compression level 2023-09-19 00:06:13 +05:30
Samuel Gomes d27faf5ad7 Update extra libraries to latest 2023-09-17 22:40:43 +05:30
Samuel Gomes a9a229f526 Replace most qbs stuff with std::string and cleanup 2023-09-17 17:20:38 +05:30
Samuel Gomes fd088ec21b Disable stderr debugging output 2023-09-17 14:13:17 +05:30
Samuel Gomes fbc01dba85 Use VGA palette instead of EGA 2023-09-17 13:46:36 +05:30
Samuel Gomes 586371dc77 Implement _SAVEIMAGE 2023-09-17 11:52:54 +05:30
Samuel Gomes 8110307e2c Add XBR & MMPX pixel scalers 2023-09-16 03:50:24 +05:30
Samuel Gomes 412b783efa Add QOI support 2023-09-15 21:05:41 +05:30
Samuel Gomes de128d8186 Add SVG loading support 2023-09-15 16:15:16 +05:30
Samuel Gomes 61fba93eb1 Remove dds_image: no load-from-memory support yet 2023-09-15 14:29:24 +05:30
Samuel Gomes 620d053577 Implement pixel scaler support 2023-09-15 14:10:27 +05:30
Samuel Gomes b8ddbc30ee Add jebp, QOI, dds_image, nanosvg & pixelscalers libraries 2023-09-15 11:24:41 +05:30
Samuel Gomes 6e80013339 Add QOA lib 2023-09-15 10:43:38 +05:30
Samuel Gomes 8548d090fc Fix macOS seg-fault reported by @grymmjack 2023-09-14 07:19:22 +05:30
Samuel Gomes 25cbfc9bff
Merge branch 'QB64-Phoenix-Edition:main' into main 2023-09-05 06:27:53 +05:30
Steve McNeill 891cbc7aef
Merge branch 'main' into main 2023-09-04 01:53:16 -04:00
SteveMcNeill 6f3cabcbdc Bug fix for CONST Blink with $NOPREFIX 2023-09-03 21:41:58 -04:00
Samuel Gomes 82fac205f5
Merge branch 'QB64-Phoenix-Edition:main' into main 2023-09-04 03:34:05 +05:30
github-actions[bot] a9fe507855 Automatic update of ./internal/source 2023-09-03 21:48:17 +00:00
Samuel Gomes 2a92e2197f
Merge branch 'QB64-Phoenix-Edition:main' into main 2023-08-25 22:34:39 +05:30
github-actions[bot] 4c50c8db3c Automatic update of ./internal/source 2023-08-25 15:40:58 +00:00
Samuel Gomes 1e251e4ea2 Add support for PCF & BDF fonts 2023-08-16 09:07:53 +05:30
Samuel Gomes bf59b9da67 Fix incorrect client rect offset when compiled with LLVM-MingW 2023-07-29 10:38:23 +05:30
github-actions[bot] 05a536d0af Automatic update of ./internal/source 2023-07-25 13:12:37 +00:00
github-actions[bot] 27b6fdb0a9 Automatic update of ./internal/source 2023-07-04 13:28:53 +00:00
github-actions[bot] f14ac84955 Automatic update of ./internal/source 2023-06-28 20:43:03 +00:00
Samuel Gomes 89a0aa9f89
Merge branch 'main' into font-improvements 2023-06-21 07:21:30 +05:30
Samuel Gomes 3b1ca3a386 Fix fonts getting vertically misaligned 2023-06-19 07:06:49 +05:30
Samuel Gomes 7c96db91be Update to Libxmp-lite v4.6.0 2023-06-17 14:07:50 +05:30
github-actions[bot] 02cb3fbf87 Automatic update of ./internal/source 2023-06-13 16:08:53 +00:00
github-actions[bot] 6772368a17 Automatic update of ./internal/source 2023-06-11 06:07:35 +00:00
Samuel Gomes 6096ab90b6 Limit MML player to octave 6 like QB64 & QB45 2023-06-10 17:19:34 +05:30
Samuel Gomes 4a70d88dee
Merge branch 'QB64-Phoenix-Edition:main' into audio-enhancements 2023-06-10 02:28:48 +05:30
Samuel Gomes 3f16e3c9d1 Add volume, panning & waveform support for SOUND 2023-06-10 02:24:05 +05:30
github-actions[bot] b4d2d380a3 Automatic update of ./internal/source 2023-06-09 19:24:40 +00:00
Samuel Gomes 947ebdca20 Replace Sleep with sub__delay() 2023-06-09 15:59:14 +05:30
Samuel Gomes b26dfff73f Implement "X" + VARPTR$(s$) support 2023-06-09 15:43:15 +05:30
Samuel Gomes ef5d29e5fb Implement PSG class 2023-06-09 13:02:14 +05:30
Samuel Gomes ced04e9516 Minor cleanup 2023-06-05 10:47:11 +05:30
Samuel Gomes e729e211e1 Update miniaudio to v0.11.17 (AIFF, AIFC support) 2023-06-01 04:09:09 +05:30
Samuel Gomes bd9a7b6f6f
Merge branch 'QB64-Phoenix-Edition:main' into audio-enhancements 2023-05-23 01:42:57 +05:30
github-actions[bot] dcb454874f Automatic update of ./internal/source 2023-05-22 19:46:34 +00:00
Samuel Gomes 8abb729d04 Update miniaudio to v0.11.16 2023-05-20 17:24:04 +05:30
Samuel Gomes cee04c3728 Mono & AA gyph metrics are now tracked separately 2023-05-18 03:19:03 +05:30
Samuel Gomes c9749a03ff Autoformat code 2023-05-10 23:44:59 +05:30
Samuel Gomes 715c1003c4 Update miniaudio to v0.11.15 2023-05-10 23:20:34 +05:30
Samuel Gomes 08b5e0f448
Merge branch 'QB64-Phoenix-Edition:main' into ucharpos-enhancement 2023-05-08 19:13:38 +05:30
Samuel Gomes 3fc585241a
Merge branch 'QB64-Phoenix-Edition:main' into audio-enhancements 2023-05-08 19:12:51 +05:30
github-actions[bot] f51f5fefa9 Automatic update of ./internal/source 2023-05-08 12:51:47 +00:00
Samuel Gomes 381e5ab0e9
Merge branch 'main' into ucharpos-enhancement 2023-05-08 18:04:22 +05:30
Samuel Gomes 47c3cac56a
Merge branch 'QB64-Phoenix-Edition:main' into dialog-fixes 2023-05-08 02:00:22 +05:30
Samuel Gomes 290081ddb6 Use LONG array instead of INTEGER 2023-05-08 01:11:01 +05:30
Samuel Gomes 60a448fb54 Add _UCHARPOS() to get individual char pixel position 2023-05-07 22:12:47 +05:30
Samuel Gomes df4c144b34
Merge branch 'QB64-Phoenix-Edition:main' into audio-enhancements 2023-05-07 09:07:26 +05:30
Samuel Gomes c6b8524739 Improve dialog functions using #305 & make string options case insensitive 2023-05-02 00:19:33 +05:30
RainRat 3914037c0f fix typos 2023-04-30 15:20:42 -07:00
Samuel Gomes 2b642a5263
Merge branch 'QB64-Phoenix-Edition:main' into audio-enhancements 2023-04-30 11:25:39 +05:30
github-actions[bot] b489451ded Automatic update of ./internal/source 2023-04-30 05:35:27 +00:00
Samuel Gomes 67b95016fc
Merge branch 'QB64-Phoenix-Edition:main' into audio-enhancements 2023-04-30 03:27:55 +05:30
github-actions[bot] 98cf704b16 Automatic update of ./internal/source 2023-04-29 21:43:42 +00:00
Samuel Gomes d1ca9d75f3 Move common validations into macros 2023-04-30 01:50:35 +05:30
Samuel Gomes f1bb16a6fe Changes per discussion in #335 2023-04-30 00:27:34 +05:30
Samuel Gomes 69b95f96e2 Resolve conflicts in main.txt 2023-04-28 21:57:39 +05:30
Samuel Gomes 9870510b04
Merge branch 'QB64-Phoenix-Edition:main' into font-FreeTypeAmalgam 2023-04-28 20:57:28 +05:30
Samuel Gomes e8ef65ba84 Remove conflits 2023-04-28 20:56:41 +05:30
Samuel Gomes 49fd18afab Update GetStringPixelWidth() to return more accurate pixel length 2023-04-28 15:04:55 +05:30
Samuel Gomes d74471b569 Fix RenderBitmap() bug 2023-04-28 00:53:45 +05:30
Samuel Gomes 97ad4d7134 Remove static variables 2023-04-28 00:35:47 +05:30
Samuel Gomes e49eb79baa Update comments 2023-04-27 23:13:54 +05:30
Samuel Gomes 4a6fb37a88 Implement all _PRINTMODEs for _UPRINTSTRING 2023-04-27 22:30:55 +05:30
Samuel Gomes 4fc1905809 Replace fast_boxfill() with qb32_boxfill() in sub__UPrintString() 2023-04-27 12:41:20 +05:30
Samuel Gomes 9ac4107d71 Implement _PRINTMODE 1 & 3 2023-04-27 08:45:25 +05:30
Samuel Gomes 5a2f235064
Merge branch 'QB64-Phoenix-Edition:main' into audio-enhancements 2023-04-27 07:30:24 +05:30
Samuel Gomes 3dd439e625 Change function names 2023-04-26 22:36:24 +05:30
Samuel Gomes 2d650cf1fe Fix GetStringPixelWidth() 2023-04-26 21:37:36 +05:30
Samuel Gomes c033c624ac Add support for _UPrint*() 2023-04-26 17:36:09 +05:30
Samuel Gomes bfacbec2b5 Fix RenderBitmapPSetAlpha() 2023-04-26 14:15:45 +05:30
Samuel Gomes 7b6b0b0d42 Implement UPint functions 2023-04-26 13:09:25 +05:30
Samuel Gomes dc1ecf9258
Merge branch 'QB64-Phoenix-Edition:main' into audio-enhancements 2023-04-26 05:00:33 +05:30
Matthew Kilgore 8e1e7bc540 Fix keyboard _Device on Windows
Currently the Keyboard _Devices entry on Windows does not report all the
key presses and releases. This is due to missing some messages in the
form of WM_SYSKEYDOWN and WM_SYSKEYUP. Additionally Windows is weird
about report the state of the individual shift keys, so we add some
logic using GetAsyncKeyState() to fix that up.

Fixes: #333
2023-04-25 19:12:01 -04:00
github-actions[bot] 49d8938230 Automatic update of ./internal/source 2023-04-25 22:01:53 +00:00
Samuel Gomes ac136b7ef7 Simplify rendering code 2023-04-22 13:03:14 +05:30
Samuel Gomes 381b27c38a Replace sprintf_s with snprintf 2023-04-21 11:02:40 +05:30
Samuel Gomes e5c4c173b4 Manual update _LOADFONT for extended syntax 2023-04-21 10:26:34 +05:30
Samuel Gomes 2da5b89a22 Improve ResizeBuffers() behavior and update comments 2023-04-21 00:02:40 +05:30
Samuel Gomes bdd9cb1256
Merge branch 'QB64-Phoenix-Edition:main' into font-fixes 2023-04-20 20:57:29 +05:30
Samuel Gomes 5692d476b4
Merge branch 'QB64-Phoenix-Edition:main' into audio-enhancements 2023-04-20 20:55:48 +05:30
Samuel Gomes 4c82a241c1 Add stub for FontLoadFileToMemory() 2023-04-20 09:26:59 +05:30
Samuel Gomes e4b36ca8ad Add font load-from-memory support 2023-04-20 09:23:13 +05:30
Samuel Gomes 469d0a11e3 Baseline is now calculated correctly 2023-04-19 19:14:10 +05:30
Samuel Gomes 58fab19c8a Fixes a potential segfault in func_play() 2023-04-19 18:15:07 +05:30
Samuel Gomes c28310de38 Fix stub_font.cpp function signatures 2023-04-19 17:02:18 +05:30
Samuel Gomes 618e5117cd Add FontPrintWidthUTF32() and optimize chrwidth() 2023-04-19 09:30:38 +05:30
Samuel Gomes 492c8d0cf5 Remove unused out_x_pre_increment, out_x_post_increment 2023-04-19 08:39:56 +05:30
Samuel Gomes ec723ed46b New FreeType cached font renderer 2023-04-19 07:49:02 +05:30
Samuel Gomes 75ff666213 Add function comments 2023-04-13 04:42:53 +05:30
Samuel Gomes ac6f6574a1 Update comments 2023-04-11 23:21:47 +05:30
Samuel Gomes feeba9c3fb Experimental MML player using miniaudio waveforms 2023-04-11 01:49:14 +05:30
Samuel Gomes 1c505561d6 Implement pending changes in #330 2023-04-09 03:37:44 +05:30
github-actions[bot] 2dd0a6a742 Automatic update of ./internal/source 2023-04-06 15:09:17 +00:00
Samuel Gomes fe5ab05e6d
Merge branch 'main' into font-cleanup 2023-04-06 19:36:21 +05:30
Samuel Gomes 1d6154e95c Supress GCC warnings (errors on Clang) 2023-04-05 13:45:15 +05:30
Samuel Gomes d974c0b9a8 Tidy up font code 2023-04-04 17:51:17 +05:30
Samuel Gomes d7a04f9164 Tidy up RAD sources 2023-04-02 16:37:18 +05:30
Samuel Gomes 5a14c90e31 Add RAD v1 support 2023-04-02 15:27:40 +05:30
Samuel Gomes a7559fb352 Update miniaudio to v0.11.14 2023-04-02 15:03:08 +05:30
Samuel Gomes ce41ec5eaa Opal OPL emulator fixes & update 1 2023-04-02 14:56:59 +05:30
github-actions[bot] 64088c2b14 Automatic update of ./internal/source 2023-03-28 22:51:12 +00:00
github-actions[bot] c6dada2ce8 Automatic update of ./internal/source 2023-03-26 23:40:05 +00:00
Samuel Gomes 8a9b8a2f25 Update TSF and add SF3 support. Fix $MIDISOUNDFONT behavior 2023-03-26 11:38:03 +05:30
github-actions[bot] 8c2dc61a54 Automatic update of ./internal/source 2023-03-24 21:04:26 +00:00
Samuel Gomes 8e8d06fd20 miniaudio version number bump 2023-03-23 05:58:10 +05:30
Samuel Gomes 5dc77acec9 Fix compilation errors with the C++ build 2023-03-22 09:18:28 +05:30
Samuel Gomes 99be0acc1e
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-update 2023-03-20 14:40:26 +05:30
github-actions[bot] c39d0eea53 Automatic update of ./internal/source 2023-03-20 08:44:49 +00:00
Samuel Gomes 09a9728464 Update miniaudio to version 0.11.12 2023-03-20 05:44:38 +05:30
github-actions[bot] fd9bd4f3b6 Automatic update of ./internal/source 2023-03-19 05:29:23 +00:00
Samuel Gomes 13a6e209d5
Merge branch 'main' into main 2023-03-19 08:57:53 +05:30
Samuel Gomes 0581d8dabc Update stb_image.h to v2.28 2023-03-19 07:21:20 +05:30
Samuel Gomes 6dd651f7cd Replace MinGW intrinsic zlib with miniz 2023-03-19 02:28:05 +05:30
Samuel Gomes 9a48df5842 Remove dummy files from internal/c/parts/network 2023-03-04 09:39:09 +05:30
Samuel Gomes 4dcefd103e Satisfy -Wc++11-narrowing 2023-03-04 07:50:46 +05:30
github-actions[bot] 2cb0db1e28 Automatic update of ./internal/source 2023-02-19 15:11:28 +00:00
github-actions[bot] 8d64ca7a04 Automatic update of ./internal/source 2023-02-19 08:27:35 +00:00
github-actions[bot] 7cd5da3d41 Automatic update of ./internal/source 2023-02-18 20:56:37 +00:00
github-actions[bot] 09e854390d Automatic update of ./internal/source 2023-02-13 17:35:30 +00:00
Samuel Gomes e1e6203db9
Merge branch 'QB64-Phoenix-Edition:main' into image-load-from-memory-support 2023-02-13 19:05:48 +05:30
github-actions[bot] 08e152635b Automatic update of ./internal/source 2023-02-13 12:57:38 +00:00
Samuel Gomes e79537e624
Merge branch 'main' into image-load-from-memory-support 2023-02-13 16:24:36 +05:30
Samuel Gomes 009eb67ac7 Update comments 2023-02-13 16:24:11 +05:30
Matthew Kilgore 3f0c4d9f9c Revert "Automatic update of ./internal/source"
This reverts commit a7ab521c91.
2023-02-13 00:50:00 -05:00
github-actions[bot] a7ab521c91 Automatic update of ./internal/source 2023-02-13 04:39:51 +00:00
Matthew Kilgore d4ed371681 Stopped timers don't trigger on TIMER ON
If a timer expires while stopped, it should trigger when TIMER ON is
run. Instead, on QB64 it triggers randomly after the TIMER ON happens.

The basic issue is that `qbevent` needs to be set to trigger the timer,
but TIMER ON doesn't do that. The regular timer logic that does that
already set it when the timer expired while sleeping, so it won't set it
again. The simplest solution is to just alway set qbevent = 1 when TIMER
ON is done. It's slightly less efficent but doesn't hurt to set it even
when there are no timers that expired.

Fixes: #293
2023-02-12 21:27:25 -05:00
Matthew Kilgore f995f38e38 Using Sleep with Console programs does not trigger timers
The command Sleep is supposed to allow timers to trigger while the
program is sleeping on the delay. This is achieved in QB64 by having
commands that do delays manually call evnt() to trigger events if they
come up (of which timers are one).

Sleep has a custom implementation for console programs on Windows which
doesn't do this, so I redid the logic so that it calls evnt() at regular
intervals while waiting for input. Additionally, due to now calling
evnt() we also need to check if we should exit sleep early due to an
evnt() firing.

Fixes: #294
2023-02-12 21:27:25 -05:00
Matthew Kilgore 924472f5d6 Fix timers not firing at the start of the program
Timer's were not firing at the right time if they were started shortly
after the program started, instead they would fire at twice the interval
time (and then work correctly after that).

The issue was a mistaken assumption about `time_now`, with the idea that
if `last_time == 0` then `time_now` will be large enough such that the
interval check will pass. This is wrong because in most cases `time_now`
starts at zero at program start, so when `last_time == 0` it will take
one full interval of the timer before `time_now` is large enough for the
interval check to pass (at which point the timer is initialized and runs
normally).

This simply refactors the timer logic so that `last_time == 0` is
checked first, rather than if the interval has expired. This doesn't
change how the normal logic works, but ensures that the value of
`time_now` does not matter for initializing a timer.

Fixes: #273
2023-02-12 21:27:25 -05:00
github-actions[bot] a3ccfbc6db Automatic update of ./internal/source 2023-02-12 23:39:33 +00:00
Samuel Gomes f86d566d7a Merge branch 'image-load-from-memory-support' of https://github.com/a740g/QB64pe into image-load-from-memory-support 2023-02-13 03:52:28 +05:30
Samuel Gomes 52d168ff00 Update to use #305 2023-02-13 03:52:16 +05:30
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