1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-08-04 23:30:26 +00:00
Commit graph

3005 commits

Author SHA1 Message Date
github-actions[bot]
c39d0eea53 Automatic update of ./internal/source 2023-03-20 08:44:49 +00:00
Roland Heyder
1c1f6c9d60
Merge pull request #319 from QB64-Phoenix-Edition/export-and-wiki
Code export and Wiki fixes
2023-03-20 09:23:32 +01:00
Roland Heyder
da5f789fd3 Fix File menu
Fix a bad interaction between "Export As" and the recent files list.
2023-03-20 01:30:55 +01:00
Roland Heyder
9d9e063b67 Multiple IDE instance fix
When exporting "Untitled" code, then take current IDE instance into account.
2023-03-19 22:56:11 +01:00
Roland Heyder
7038e2527d Fix Wiki downloads (Update all pages)
Better detect deleted/new pages and prevent the problem discussed here: https://qb64phoenix.com/forum/showthread.php?tid=1521
2023-03-19 12:33:24 +01:00
Roland Heyder
c52d3bcd28 Add code export abilities
Use File menu > Export As... to export current code as HTML, Rich Text or Wiki example.
2023-03-19 12:27:54 +01:00
github-actions[bot]
fd9bd4f3b6 Automatic update of ./internal/source 2023-03-19 05:29:23 +00:00
Samuel Gomes
dc4b7d27aa
Merge pull request #317 from a740g/main
Replace zlib with miniz
2023-03-19 10:41:12 +05:30
Samuel Gomes
13a6e209d5
Merge branch 'main' into main 2023-03-19 08:57:53 +05:30
Samuel Gomes
889408acb9 Remove DEPENDENCY_ZLIB related stuff from Makefile 2023-03-19 08:55:02 +05:30
Samuel Gomes
7af6c710cb
Merge pull request #318 from a740g/stb_image_update
Update stb_image.h to v2.28
2023-03-19 08:44:41 +05:30
Samuel Gomes
0581d8dabc Update stb_image.h to v2.28 2023-03-19 07:21:20 +05:30
Samuel Gomes
bb74db418e Minor edits to directory names mentioned in license/README.md 2023-03-19 04:27:42 +05:30
Samuel Gomes
71c9155962 Merge branch 'main' of https://github.com/a740g/QB64pe 2023-03-19 04:12:53 +05:30
Samuel Gomes
f72aaa7c3c Update tests 2023-03-19 04:12:46 +05:30
Samuel Gomes
5c3fe449e6 Update miniz license 2023-03-19 03:05:29 +05:30
Samuel Gomes
6dd651f7cd Replace MinGW intrinsic zlib with miniz 2023-03-19 02:28:05 +05:30
Samuel Gomes
22c2482826
Merge pull request #314 from a740g/llvm-mingw-windows-aarch64-support
Tiny fixes that allow the IDE to be compiled with LLVM MinGW
2023-03-16 06:11:34 +05:30
Samuel Gomes
097395959c Update Makefile to correctly set BITS when on WoA64 2023-03-04 11:24:44 +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
Matt Kilgore
51471e6a97
Merge pull request #310 from mkilgore/release-3.6.0
Version 3.6.0
2023-02-19 09:52:09 -05:00
Matthew Kilgore
07822586e8 Version 3.6.0 2023-02-19 03:40:00 -05:00
github-actions[bot]
8d64ca7a04 Automatic update of ./internal/source 2023-02-19 08:27:35 +00:00
Matt Kilgore
0dcce35923
Merge pull request #307 from mkilgore/fix-symbol-dynamic
Fix DECLARE LIBRARY against stripped .so file
2023-02-19 03:08:17 -05:00
Matthew Kilgore
fac5375ea6 Fix DECLARE LIBRARY against stripped .so file
.so files can be stripped such that they contain no "regular" symbol
table but do still contain the "dynamic" symbol table, this is pretty
typical for .so files. QB64-PE is supposed to check both tables when
linking against a .so file, but a bug in ab0c2b18 meant that the second
run of nm with the -D flag to check the dynamic symbol table no longer
happens. The fix is to introduce a new output file for the dynamic run
so that they are handled separately in terms of caching the result.

A new test .so file that only contains a dynamic symbol table was added
to avoid this in the future.

Fixes: #301
2023-02-19 02:10:51 -05:00
github-actions[bot]
7cd5da3d41 Automatic update of ./internal/source 2023-02-18 20:56:37 +00:00
Matt Kilgore
2fe0dd3328
Merge pull request #306 from mkilgore/fix-o-flag-strip-extension
The -o flag should not strip extensions except for .exe
2023-02-18 15:34:51 -05:00
Matthew Kilgore
596a8d6092 Fix formatting 2023-02-18 14:50:31 -05:00
Matthew Kilgore
df70f7e708 The -o flag should not strip extensions except for .exe
Current the -o flag will strip any "extension" on the provided filename,
which is fairly problimatic on Linux and Mac OS since those executes do
not have other extensions and names like "foobar.v1" will get the ".v1"
stripped off. This can happen on Windows as well if you leave off the
.exe (QB64-PE will add it for you, but also strip off the existing
extension).

QB64-PE stripping off the ".exe" when provided that on Linux and Mac OS
might actually be useful behavior people are relying on (so that they
don't need to provide different names when compiling on Linux/Mac OS) so
we are preserving that and still removing the extension if it is exactly
"EXE", otherwise we now leave it in place.

Fixes: #297
2023-02-18 14:50:31 -05:00
github-actions[bot]
09e854390d Automatic update of ./internal/source 2023-02-13 17:35:30 +00:00
Samuel Gomes
fde4d195d7
Merge pull request #286 from a740g/image-load-from-memory-support
Image load from memory support
2023-02-13 22:48:31 +05:30
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
Matt Kilgore
87de12b43c
Merge pull request #309 from mkilgore/fix-rgb32-opt-args
Fix _RGB32() optional arguments
2023-02-13 07:35:47 -05: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
Matthew Kilgore
e810229d11 Fix _RGB32() optional arguments
The new optional arguments for functions broke _RGB32() because it uses
some custom flags ('overloaded' and 'minargs' on the id Type) to control
its parameter passing. You are allowed passing any number from 1 to 4 args
to `func__rgb32` and there are 4 overloaded C++ functions that will get
picked from. This is different from how this typically would work, with
all 4 parameters always passed and an extra argument to specify the
parameters that were passed.

Rather than change `func__rgb32` I simply adjusted the optional argument
logic to account for the flags used by `_RGB32()` - if the `overloaded`
flag is set, then we don't need to add extra `NULL` parameters for any
parameter that wasn't specified in the argument list. Instead we simply
don't emit anything for those.
2023-02-13 00:25:51 -05:00
github-actions[bot]
a7ab521c91 Automatic update of ./internal/source 2023-02-13 04:39:51 +00:00
Matt Kilgore
f2171ccf34
Merge pull request #305 from mkilgore/allow-optional-arg-funcs
Add support for optional function arguments
2023-02-12 23:21:32 -05:00
Matthew Kilgore
0836cf31eb Format source, apply Option _Explicit in tests 2023-02-12 22:38:50 -05:00
Matthew Kilgore
83533dc319 Add support for optional function arguments
Currently functions only have very limited optional argument support,
this expands it so that we can have more complex sets of optional
arguments for functions, such as multiple arguments where not all need
to be provided. This will be used in the future for some upcoming
functionality.

Note that this does not support any generic optional argument format,
the commas always have to be provided unless an optional argument is at
the end of the parameter list. Thus, if you have a format with two
optional arguments and you want to omit the second, then you need to call
it as 'foo(2, , 3)`, rather than `foo(2, 3)`. This is important for
avoiding ambiguous situations, and is how many SUBs currently function.

The two functions that violate that requirement are INSTR() and
_INSTRREV(), which use the format `[?],?,?` and allow omitting the comma
for the first argument. This format is simply handled as a special case.

Fixes: #303
2023-02-12 22:38:50 -05:00
Matt Kilgore
47639507ff
Merge pull request #295 from mkilgore/fix-timer-first-run
Fix timers at program start, TIMER STOP, and Sleep with console
2023-02-12 22:08:55 -05: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
Roland Heyder
0568d73fd8
Merge pull request #308 from QB64-Phoenix-Edition/wiki-dev 2023-02-13 00:21:15 +01:00