Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
1f8ccfa
project/README: document packages to build for Linux on Fedora
joshtynjala Feb 5, 2026
6fc6963
BuildHashlink.xml: use -std=gnu17 for mysql to support gcc 15
joshtynjala Feb 5, 2026
94af1b8
Bytes: Fix length from fromBytes on JS (#2025)
Geokureli Feb 6, 2026
b3d7fbc
SDLWindow: Share OpenGL context between SDL windows
dimensionscape Feb 7, 2026
13e54f6
Revert "SDLWindow: Share OpenGL context between SDL windows"
dimensionscape Feb 7, 2026
f757c37
[ci] Set HXCPP_COMPILE_CACHE without "~"
tobil4sk Feb 15, 2026
0719739
prepare for 8.3.1
joshtynjala Feb 16, 2026
3dd3dd2
CHANGELOG: change list items from * to - to preserve formatting on co…
joshtynjala Feb 17, 2026
ef35b01
Calibrate SDL sleep and refine frame timing
dimensionscape Mar 3, 2026
6bd38a0
Backport sdl fix for backspace bug on android
tobil4sk Mar 4, 2026
199a39e
Fix GL objects not getting GC'd on HL
ACrazyTown Mar 8, 2026
678d074
project/README: a couple more required libraries for a fresh Fedora L…
joshtynjala Mar 14, 2026
c2a0a7c
project/README: missed a Fedora Linux dependency in commit 0b67026
joshtynjala Mar 14, 2026
a798525
actions: update dependencies and use max compression for lime-haxelib…
joshtynjala Mar 17, 2026
c70b2cb
Clipboard: manually update the clipboard text on iOS and tvOS when re…
joshtynjala Mar 20, 2026
eb058c4
Clipboard: android also requires manually updating text
joshtynjala Mar 20, 2026
4b4beb3
ArrayBufferView: fix big endian issues and make code more consistent
joshtynjala Mar 25, 2026
81a89f3
unit tests for ArrayBuffer and DataView
joshtynjala Mar 25, 2026
f7c0a66
actions: run tests on windows, mac, linux, neko, hl, and air targets
joshtynjala Mar 25, 2026
7b58f95
ArrayBufferView: fix copying from other ArrayBufferView instances wit…
joshtynjala Mar 26, 2026
8ef0f48
tests: ArrayBuffer subarray, add tests for uint 8-32 typed arrays
joshtynjala Mar 26, 2026
762eaa1
Add runtime guards for GL3 calls
dimensionscape Mar 27, 2026
9fb5673
Guard OpenGL functions with availability checks
dimensionscape Mar 27, 2026
e977d42
Guard GL calls with desktop-aware checks
dimensionscape Mar 27, 2026
8bee0e7
tools: Move NPM build to after Haxe build. Allow <define name='npm' /…
jgranick Mar 27, 2026
ccb2e75
Revert "tools: Move NPM build to after Haxe build. Allow <define name…
jgranick Mar 28, 2026
6bd5f9e
Add main-loop, VSync and window flags
dimensionscape Mar 31, 2026
3e566d4
Fix Neko main loop CFFI arity
dimensionscape Mar 31, 2026
e876758
CI: clean native rebuilds before unit tests
dimensionscape Apr 1, 2026
d3bb349
Fix HashLink main loop and vsync exports
dimensionscape Apr 1, 2026
1ef398e
Add docs for frame timing and vsync APIs
dimensionscape Apr 1, 2026
5eaf87d
Guard AIR startup against null stage access
dimensionscape Apr 1, 2026
45561c3
Fix AIR startup frame timing re-entrancy
dimensionscape Apr 1, 2026
c60e2ad
Use Haxe 3 enum abstract syntax for timing enums
dimensionscape Apr 2, 2026
8d840ea
Use version-gated enum abstract syntax for timing enums
dimensionscape Apr 2, 2026
e2fa466
Revert "Merge branch '8.4.0-dev' into main-loop-experimental-v3"
dimensionscape Apr 13, 2026
4c8ecae
Reapply "Merge branch '8.4.0-dev' into main-loop-experimental-v3"
dimensionscape Apr 13, 2026
221fe82
Delete FrameTimingTest.hx
dimensionscape Apr 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
162 changes: 89 additions & 73 deletions .github/workflows/main.yml

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,4 @@ package-lock.json
node_modules
!templates/**/node_modules
.vscode/
tests/**/bin/
3,560 changes: 1,792 additions & 1,768 deletions CHANGELOG.md

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions project/BuildHashlink.xml
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@
</files>

<files id="mysql">
<compilerflag value="-std=gnu17" unless="windows" />
<compilerflag value="-I${HASHLINK_PATH}/src" />
<compilerflag value="-I/usr/local/include" if="mac"/>

Expand Down
20 changes: 13 additions & 7 deletions project/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,21 @@ This directory contains two categories of code.
- Windows requires [Visual Studio C++ components](https://visualstudio.microsoft.com/vs/features/cplusplus/).
- Mac requires [Xcode](https://developer.apple.com/xcode/).
- Linux requires several packages (names may vary per distro).
- Ubunutu requires the following packages.

```bash
sudo apt install libgl1-mesa-dev libglu1-mesa-dev g++ g++-multilib gcc-multilib libasound2-dev libx11-dev libxext-dev libxi-dev libxrandr-dev libxinerama-dev libpulse-dev
```
- Raspberry Pi OS requires a slightly different set of packages.
```bash
sudo apt install libgl1-mesa-dev libglu1-mesa-dev g++ g++-multilib gcc-multilib libasound2-dev libx11-dev libxext-dev libxi-dev libxrandr-dev libxinerama-dev libpulse-dev
```
- While Raspberry Pi OS also uses `apt`, it requires a slightly different set of packages.

```bash
sudo apt install libgl1-mesa-dev libglu1-mesa-dev g++ libasound2-dev libx11-dev libxext-dev libxi-dev libxrandr-dev libxinerama-dev libpulse-dev libxcursor-dev libdbus-1-dev libdrm-dev libgbm-dev libudev-dev
```
```bash
sudo apt install libgl1-mesa-dev libglu1-mesa-dev g++ libasound2-dev libx11-dev libxext-dev libxi-dev libxrandr-dev libxinerama-dev libpulse-dev libxcursor-dev libdbus-1-dev libdrm-dev libgbm-dev libudev-dev
```
- Fedora requires the following packages.

```bash
sudo dnf install g++ glibc-devel.x86_64 libstdc++-devel.x86_64 glibc-devel.i686 libstdc++-devel.i686 alsa-lib-devel pulseaudio-libs-devel libX11-devel libXi-devel libXrandr-devel libglvnd-devel
```
- Building HashLink requires [additional packages](https://github.com/HaxeFoundation/hashlink#readme).

### Rebuilding
Expand Down
4 changes: 3 additions & 1 deletion project/include/app/Application.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ namespace lime {
virtual int Exec () = 0;
virtual void Init () = 0;
virtual int Quit () = 0;
virtual void SetMainLoop (int profile, double frameRate, int timePrecision, int busyWait, int uncapMode) { SetFrameRate (frameRate); }
virtual void SetFrameRate (double frameRate) = 0;
virtual void SetVSyncMode (int vsyncMode) {}
virtual bool Update () = 0;


Expand All @@ -33,4 +35,4 @@ namespace lime {
}


#endif
#endif
10 changes: 8 additions & 2 deletions project/include/ui/Window.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,12 @@ namespace lime {
virtual void SetTextInputEnabled (bool enable) = 0;
virtual void SetTextInputRect (Rectangle *rect) = 0;
virtual const char* SetTitle (const char* title) = 0;
virtual void SetVSyncMode (int vsyncMode) {}
virtual bool SetVisible (bool visible) = 0;
virtual bool SetAlwaysOnTop (bool alwaysOnTop) = 0;
virtual void WarpMouse (int x, int y) = 0;
virtual int GetVSyncInterval () const { return 0; }
virtual double GetRefreshRate () const { return 60.0; }

Application* currentApplication;
int flags;
Expand Down Expand Up @@ -95,8 +98,11 @@ namespace lime {
WINDOW_FLAG_MINIMIZED = 0x00002000,
WINDOW_FLAG_MAXIMIZED = 0x00004000,
WINDOW_FLAG_ALWAYS_ON_TOP = 0x00008000,
WINDOW_FLAG_COLOR_DEPTH_32_BIT = 0x00010000

WINDOW_FLAG_COLOR_DEPTH_32_BIT = 0x00010000,
WINDOW_FLAG_SKIP_TASKBAR = 0x00020000,
WINDOW_FLAG_UTILITY = 0x00040000,
WINDOW_FLAG_POPUP_MENU = 0x00080000,
WINDOW_FLAG_TOOLTIP = 0x00100000
};

}
Expand Down
2 changes: 1 addition & 1 deletion project/lib/mojoal
36 changes: 36 additions & 0 deletions project/src/ExternalInterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,38 @@ namespace lime {
}


void lime_application_set_main_loop (value application, int profile, double frameRate, int timePrecision, int busyWait, int uncapMode) {

Application* app = (Application*)val_data (application);
app->SetMainLoop (profile, frameRate, timePrecision, busyWait, uncapMode);

}


HL_PRIM void HL_NAME(hl_application_set_main_loop) (HL_CFFIPointer* application, int profile, double frameRate, int timePrecision, int busyWait, int uncapMode) {

Application* app = (Application*)application->ptr;
app->SetMainLoop (profile, frameRate, timePrecision, busyWait, uncapMode);

}


void lime_application_set_vsync_mode (value application, int vsyncMode) {

Application* app = (Application*)val_data (application);
app->SetVSyncMode (vsyncMode);

}


HL_PRIM void HL_NAME(hl_application_set_vsync_mode) (HL_CFFIPointer* application, int vsyncMode) {

Application* app = (Application*)application->ptr;
app->SetVSyncMode (vsyncMode);

}


bool lime_application_update (value application) {

Application* app = (Application*)val_data (application);
Expand Down Expand Up @@ -4079,7 +4111,9 @@ namespace lime {
DEFINE_PRIME1 (lime_application_exec);
DEFINE_PRIME1v (lime_application_init);
DEFINE_PRIME1 (lime_application_quit);
DEFINE_PRIME6v (lime_application_set_main_loop);
DEFINE_PRIME2v (lime_application_set_frame_rate);
DEFINE_PRIME2v (lime_application_set_vsync_mode);
DEFINE_PRIME1 (lime_application_update);
DEFINE_PRIME2 (lime_audio_load);
DEFINE_PRIME2 (lime_audio_load_bytes);
Expand Down Expand Up @@ -4276,6 +4310,8 @@ namespace lime {
DEFINE_HL_PRIM (_VOID, hl_application_init, _TCFFIPOINTER);
DEFINE_HL_PRIM (_I32, hl_application_quit, _TCFFIPOINTER);
DEFINE_HL_PRIM (_VOID, hl_application_set_frame_rate, _TCFFIPOINTER _F64);
DEFINE_HL_PRIM (_VOID, hl_application_set_main_loop, _TCFFIPOINTER _I32 _F64 _I32 _I32 _I32);
DEFINE_HL_PRIM (_VOID, hl_application_set_vsync_mode, _TCFFIPOINTER _I32);
DEFINE_HL_PRIM (_BOOL, hl_application_update, _TCFFIPOINTER);
DEFINE_HL_PRIM (_TAUDIOBUFFER, hl_audio_load_bytes, _TBYTES _TAUDIOBUFFER);
DEFINE_HL_PRIM (_TAUDIOBUFFER, hl_audio_load_file, _STRING _TAUDIOBUFFER);
Expand Down
Loading
Loading