Skip to content

Commit 20cd1ca

Browse files
committed
Merge remote branch main into emscripten-22847
1 parent 861fc4b commit 20cd1ca

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+387
-168
lines changed

ChangeLog.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ See docs/process.md for more on how version tagging works.
2020

2121
3.1.72 (in development)
2222
-----------------------
23+
- The `MEMORY64` setting is no longer experimental. At time of writing all
24+
browsers still require a flag to run the resulting binaries but that should
25+
change in the coming months since the proposal is now at stage 4. (#22864)
2326

2427
3.1.71 - 11/04/24
2528
-----------------

site/source/docs/api_reference/html5.h.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -579,7 +579,7 @@ Struct
579579
The event structure passed in DOM element `UIEvent <https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#interface-UIEvent>`_ events: `resize <https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#event-type-resize>`_ and `scroll <https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#event-type-scroll>`_.
580580
581581
582-
.. c:member:: long detail
582+
.. c:member:: int detail
583583
584584
For resize and scroll events this is always zero.
585585

site/source/docs/tools_reference/settings_reference.rst

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3297,7 +3297,9 @@ Default value: true
32973297
RUNTIME_DEBUG
32983298
=============
32993299

3300-
If true, add tracing to core runtime functions.
3300+
If non-zero, add tracing to core runtime functions. Can be set to 2 for
3301+
extra tracing (for example, tracing that occurs on each turn of the event
3302+
loop or each user callback, which can flood the console).
33013303
This setting is enabled by default if any of the following debugging settings
33023304
are enabled:
33033305
- PTHREADS_DEBUG
@@ -3311,7 +3313,7 @@ are enabled:
33113313
- SOCKET_DEBUG
33123314
- FETCH_DEBUG
33133315

3314-
Default value: false
3316+
Default value: 0
33153317

33163318
.. _legacy_runtime:
33173319

src/library.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2160,7 +2160,7 @@ addToLibrary({
21602160
return;
21612161
}
21622162
#endif
2163-
#if RUNTIME_DEBUG
2163+
#if RUNTIME_DEBUG >= 2
21642164
dbg(`maybeExit: user callback done: runtimeKeepaliveCounter=${runtimeKeepaliveCounter}`);
21652165
#endif
21662166
if (!keepRuntimeAlive()) {

src/library_fs.js

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ FS.staticInit();
6363
trackingDelegate: {},
6464
#endif
6565
ErrnoError: null, // set during init
66-
genericErrors: {},
6766
filesystems: null,
6867
syncFSRequests: 0, // we warn if there are multiple in flight at once
6968
#if expectToReceiveOnModule('logReadFiles')
@@ -1435,12 +1434,6 @@ FS.staticInit();
14351434
#endif
14361435
},
14371436
staticInit() {
1438-
// Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info)
1439-
[{{{ cDefs.ENOENT }}}].forEach((code) => {
1440-
FS.genericErrors[code] = new FS.ErrnoError(code);
1441-
FS.genericErrors[code].stack = '<generic error, no stack>';
1442-
});
1443-
14441437
FS.nameTable = new Array(4096);
14451438

14461439
FS.mount(MEMFS, {}, '/');

src/library_glfw.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ var LibraryGLFW = {
419419
// This logic comes directly from the sdl implementation. We cannot
420420
// call preventDefault on all keydown events otherwise onKeyPress will
421421
// not get called
422-
if (event.keyCode === 8 /* backspace */ || event.keyCode === 9 /* tab */) {
422+
if (event.key == 'Backspace' || event.key == 'Tab') {
423423
event.preventDefault();
424424
}
425425
},

src/library_memfs.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,15 @@
66

77
addToLibrary({
88
$MEMFS__deps: ['$FS', '$mmapAlloc'],
9+
#if !ASSERTIONS
10+
$MEMFS__postset: `
11+
// This error may happen quite a bit. To avoid overhead we reuse it (and
12+
// suffer a lack of stack info).
13+
MEMFS.doesNotExistError = new FS.ErrnoError({{{ cDefs.ENOENT }}});
14+
/** @suppress {checkTypes} */
15+
MEMFS.doesNotExistError.stack = '<generic error, no stack>';
16+
`,
17+
#endif
918
$MEMFS: {
1019
ops_table: null,
1120
mount(mount) {
@@ -173,7 +182,11 @@ addToLibrary({
173182
}
174183
},
175184
lookup(parent, name) {
176-
throw FS.genericErrors[{{{ cDefs.ENOENT }}}];
185+
#if ASSERTIONS
186+
throw new FS.ErrnoError({{{ cDefs.ENOENT }}});
187+
#else
188+
throw MEMFS.doesNotExistError;
189+
#endif
177190
},
178191
mknod(parent, name, mode, dev) {
179192
return MEMFS.createNode(parent, name, mode, dev);

src/library_pthread.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,7 +1043,7 @@ var LibraryPThread = {
10431043
'$runtimeKeepaliveCounter',
10441044
#endif
10451045
],
1046-
$invokeEntryPoint: (ptr, arg) => {
1046+
$invokeEntryPoint: {{{ asyncIf(ASYNCIFY == 2) }}} (ptr, arg) => {
10471047
#if PTHREADS_DEBUG
10481048
dbg(`invokeEntryPoint: ${ptrToString(ptr)}`);
10491049
#endif
@@ -1079,7 +1079,9 @@ var LibraryPThread = {
10791079
// *ThreadMain(void *arg) form, or try linking with the Emscripten linker
10801080
// flag -sEMULATE_FUNCTION_POINTER_CASTS to add in emulation for this x86
10811081
// ABI extension.
1082-
var result = {{{ makeDynCall('pp', 'ptr') }}}(arg);
1082+
1083+
var result = {{{ makeDynCall('pp', 'ptr', ASYNCIFY == 2) }}}(arg);
1084+
10831085
#if STACK_OVERFLOW_CHECK
10841086
checkStackCookie();
10851087
#endif
@@ -1098,10 +1100,9 @@ var LibraryPThread = {
10981100
#endif
10991101
}
11001102
#if ASYNCIFY == 2
1101-
Promise.resolve(result).then(finish);
1102-
#else
1103-
finish(result);
1103+
result = await result;
11041104
#endif
1105+
finish(result);
11051106
},
11061107
11071108
#if MAIN_MODULE

src/library_sdl.js

Lines changed: 62 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -348,13 +348,13 @@ var LibrarySDL = {
348348
translateRGBAToColor: (r, g, b, a) => r | g << 8 | b << 16 | a << 24,
349349

350350
makeSurface(width, height, flags, usePageCanvas, source, rmask, gmask, bmask, amask) {
351-
var is_SDL_HWSURFACE = flags & 0x00000001;
352-
var is_SDL_HWPALETTE = flags & 0x00200000;
353-
var is_SDL_OPENGL = flags & 0x04000000;
351+
var is_SDL_HWSURFACE = flags & {{{ cDefs.SDL_HWSURFACE }}};
352+
var is_SDL_HWPALETTE = flags & {{{ cDefs.SDL_HWPALETTE }}};
353+
var is_SDL_OPENGL = flags & {{{ cDefs.SDL_OPENGL }}};
354354

355355
var surf = _malloc({{{ C_STRUCTS.SDL_Surface.__size__ }}});
356356
var pixelFormat = _malloc({{{ C_STRUCTS.SDL_PixelFormat.__size__ }}});
357-
//surface with SDL_HWPALETTE flag is 8bpp surface (1 byte)
357+
// surface with SDL_HWPALETTE flag is 8bpp surface (1 byte)
358358
var bpp = is_SDL_HWPALETTE ? 1 : 4;
359359
var buffer = 0;
360360

@@ -405,10 +405,10 @@ var LibrarySDL = {
405405
}
406406

407407
var webGLContextAttributes = {
408-
antialias: ((SDL.glAttributes[13 /*SDL_GL_MULTISAMPLEBUFFERS*/] != 0) && (SDL.glAttributes[14 /*SDL_GL_MULTISAMPLESAMPLES*/] > 1)),
409-
depth: (SDL.glAttributes[6 /*SDL_GL_DEPTH_SIZE*/] > 0),
410-
stencil: (SDL.glAttributes[7 /*SDL_GL_STENCIL_SIZE*/] > 0),
411-
alpha: (SDL.glAttributes[3 /*SDL_GL_ALPHA_SIZE*/] > 0)
408+
antialias: ((SDL.glAttributes[{{{ cDefs.SDL_GL_MULTISAMPLEBUFFERS }}}] != 0) && (SDL.glAttributes[{{{ cDefs.SDL_GL_MULTISAMPLESAMPLES }}}] > 1)),
409+
depth: (SDL.glAttributes[{{{ cDefs.SDL_GL_DEPTH_SIZE }}}] > 0),
410+
stencil: (SDL.glAttributes[{{{ cDefs.SDL_GL_STENCIL_SIZE }}}] > 0),
411+
alpha: (SDL.glAttributes[{{{ cDefs.SDL_GL_ALPHA_SIZE }}}] > 0)
412412
};
413413

414414
#if OFFSCREEN_FRAMEBUFFER
@@ -649,7 +649,7 @@ var LibrarySDL = {
649649

650650
// Simulate old-style SDL events representing mouse wheel input as buttons
651651
// Subtract one since JS->C marshalling is defined to add one back.
652-
var button = delta > 0 ? 3 /*SDL_BUTTON_WHEELUP-1*/ : 4 /*SDL_BUTTON_WHEELDOWN-1*/;
652+
var button = (delta > 0 ? {{{ cDefs.SDL_BUTTON_WHEELUP }}} : {{{ cDefs.SDL_BUTTON_WHEELDOWN }}}) - 1;
653653
SDL.events.push({ type: 'mousedown', button, pageX: event.pageX, pageY: event.pageY });
654654
SDL.events.push({ type: 'mouseup', button, pageX: event.pageX, pageY: event.pageY });
655655

@@ -696,7 +696,7 @@ var LibrarySDL = {
696696
// won't fire. However, it's fine (and in some cases necessary) to
697697
// preventDefault for keys that don't generate a character. Otherwise,
698698
// preventDefault is the right thing to do in general.
699-
if (event.type !== 'keydown' || (!SDL.unicode && !SDL.textInput) || (event.keyCode === 8 /* backspace */ || event.keyCode === 9 /* tab */)) {
699+
if (event.type !== 'keydown' || (!SDL.unicode && !SDL.textInput) || (event.key == 'Backspace' || event.key == 'Tab')) {
700700
event.preventDefault();
701701
}
702702

@@ -826,6 +826,9 @@ var LibrarySDL = {
826826
if (code >= 65 && code <= 90) {
827827
code += 32; // make lowercase for SDL
828828
} else {
829+
#if RUNTIME_DEBUG
830+
if (!(event.keyCode in SDL.keyCodes)) dbg('unknown keyCode: ', event.keyCode);
831+
#endif
829832
code = SDL.keyCodes[event.keyCode] || event.keyCode;
830833
// If this is one of the modifier keys (224 | 1<<10 - 227 | 1<<10), and the event specifies that it is
831834
// a right key, add 4 to get the right key SDL key code.
@@ -859,12 +862,13 @@ var LibrarySDL = {
859862
#endif
860863
{{{ makeSetValue('SDL.keyboardState', 'code', 'down', 'i8') }}};
861864
// TODO: lmeta, rmeta, numlock, capslock, KMOD_MODE, KMOD_RESERVED
862-
SDL.modState = ({{{ makeGetValue('SDL.keyboardState', '1248', 'i8') }}} ? 0x0040 : 0) | // KMOD_LCTRL
863-
({{{ makeGetValue('SDL.keyboardState', '1249', 'i8') }}} ? 0x0001 : 0) | // KMOD_LSHIFT
864-
({{{ makeGetValue('SDL.keyboardState', '1250', 'i8') }}} ? 0x0100 : 0) | // KMOD_LALT
865-
({{{ makeGetValue('SDL.keyboardState', '1252', 'i8') }}} ? 0x0080 : 0) | // KMOD_RCTRL
866-
({{{ makeGetValue('SDL.keyboardState', '1253', 'i8') }}} ? 0x0002 : 0) | // KMOD_RSHIFT
867-
({{{ makeGetValue('SDL.keyboardState', '1254', 'i8') }}} ? 0x0200 : 0); // KMOD_RALT
865+
SDL.modState =
866+
({{{ makeGetValue('SDL.keyboardState', cDefs.SDLK_LCTRL, 'i8') }}} ? {{{ cDefs.KMOD_LCTRL }}} : 0) |
867+
({{{ makeGetValue('SDL.keyboardState', cDefs.SDLK_LSHIFT, 'i8') }}} ? {{{ cDefs.KMOD_LSHIFT }}} : 0) |
868+
({{{ makeGetValue('SDL.keyboardState', cDefs.SDLK_LALT, 'i8') }}} ? {{{ cDefs.KMOD_LALT }}} : 0) |
869+
({{{ makeGetValue('SDL.keyboardState', cDefs.SDLK_RCTRL, 'i8') }}} ? {{{ cDefs.KMOD_RCTRL }}} : 0) |
870+
({{{ makeGetValue('SDL.keyboardState', cDefs.SDLK_RSHIFT, 'i8') }}} ? {{{ cDefs.KMOD_RSHIFT }}} : 0) |
871+
({{{ makeGetValue('SDL.keyboardState', cDefs.SDLK_RALT, 'i8') }}} ? {{{ cDefs.KMOD_RALT }}} : 0);
868872
if (down) {
869873
SDL.keyboardMap[code] = event.keyCode; // save the DOM input, which we can use to unpress it during blur
870874
} else {
@@ -900,7 +904,7 @@ var LibrarySDL = {
900904
},
901905

902906
pollEvent(ptr) {
903-
if (SDL.initFlags & 0x200 && SDL.joystickEventState) {
907+
if (SDL.initFlags & {{{ cDefs.SDL_INIT_JOYSTICK }}} && SDL.joystickEventState) {
904908
// If SDL_INIT_JOYSTICK was supplied AND the joystick system is configured
905909
// to automatically query for events, query for joystick events.
906910
SDL.queryJoysticks();
@@ -930,7 +934,9 @@ var LibrarySDL = {
930934
switch (event.type) {
931935
case 'keydown': case 'keyup': {
932936
var down = event.type === 'keydown';
933-
//dbg('Received key event: ' + event.keyCode);
937+
#if RUNTIME_DEBUG
938+
dbg(`received ${event.type} event: keyCode=${event.keyCode}, key=${event.key}, code=${event.code}`);
939+
#endif
934940
var key = SDL.lookupKeyCodeForEvent(event);
935941
var scan;
936942
if (key >= 1024) {
@@ -1043,23 +1049,19 @@ var LibrarySDL = {
10431049
break;
10441050
}
10451051
case 'focus': {
1046-
var SDL_WINDOWEVENT_FOCUS_GAINED = 12 /* SDL_WINDOWEVENT_FOCUS_GAINED */;
10471052
{{{ makeSetValue('ptr', C_STRUCTS.SDL_WindowEvent.type, 'SDL.DOMEventToSDLEvent[event.type]', 'i32') }}};
10481053
{{{ makeSetValue('ptr', C_STRUCTS.SDL_WindowEvent.windowID, '0', 'i32') }}};
1049-
{{{ makeSetValue('ptr', C_STRUCTS.SDL_WindowEvent.event, 'SDL_WINDOWEVENT_FOCUS_GAINED', 'i8') }}};
1054+
{{{ makeSetValue('ptr', C_STRUCTS.SDL_WindowEvent.event, cDefs.SDL_WINDOWEVENT_FOCUS_GAINED, 'i8') }}};
10501055
break;
10511056
}
10521057
case 'blur': {
1053-
var SDL_WINDOWEVENT_FOCUS_LOST = 13 /* SDL_WINDOWEVENT_FOCUS_LOST */;
10541058
{{{ makeSetValue('ptr', C_STRUCTS.SDL_WindowEvent.type, 'SDL.DOMEventToSDLEvent[event.type]', 'i32') }}};
10551059
{{{ makeSetValue('ptr', C_STRUCTS.SDL_WindowEvent.windowID, '0', 'i32') }}};
1056-
{{{ makeSetValue('ptr', C_STRUCTS.SDL_WindowEvent.event, 'SDL_WINDOWEVENT_FOCUS_LOST', 'i8') }}};
1060+
{{{ makeSetValue('ptr', C_STRUCTS.SDL_WindowEvent.event, cDefs.SDL_WINDOWEVENT_FOCUS_LOST, 'i8') }}};
10571061
break;
10581062
}
10591063
case 'visibilitychange': {
1060-
var SDL_WINDOWEVENT_SHOWN = 1 /* SDL_WINDOWEVENT_SHOWN */;
1061-
var SDL_WINDOWEVENT_HIDDEN = 2 /* SDL_WINDOWEVENT_HIDDEN */;
1062-
var visibilityEventID = event.visible ? SDL_WINDOWEVENT_SHOWN : SDL_WINDOWEVENT_HIDDEN;
1064+
var visibilityEventID = event.visible ? {{{ cDefs.SDL_WINDOWEVENT_SHOWN }}} : {{{ cDefs.SDL_WINDOWEVENT_HIDDEN }}};
10631065
{{{ makeSetValue('ptr', C_STRUCTS.SDL_WindowEvent.type, 'SDL.DOMEventToSDLEvent[event.type]', 'i32') }}};
10641066
{{{ makeSetValue('ptr', C_STRUCTS.SDL_WindowEvent.windowID, 0, 'i32') }}};
10651067
{{{ makeSetValue('ptr', C_STRUCTS.SDL_WindowEvent.event, 'visibilityEventID' , 'i8') }}};
@@ -1390,28 +1392,28 @@ var LibrarySDL = {
13901392
window.addEventListener("unload", SDL.receiveEvent);
13911393
SDL.keyboardState = _calloc(0x10000, 1); // Our SDL needs 512, but 64K is safe for older SDLs
13921394
// Initialize this structure carefully for closure
1393-
SDL.DOMEventToSDLEvent['keydown'] = 0x300 /* SDL_KEYDOWN */;
1394-
SDL.DOMEventToSDLEvent['keyup'] = 0x301 /* SDL_KEYUP */;
1395-
SDL.DOMEventToSDLEvent['keypress'] = 0x303 /* SDL_TEXTINPUT */;
1396-
SDL.DOMEventToSDLEvent['mousedown'] = 0x401 /* SDL_MOUSEBUTTONDOWN */;
1397-
SDL.DOMEventToSDLEvent['mouseup'] = 0x402 /* SDL_MOUSEBUTTONUP */;
1398-
SDL.DOMEventToSDLEvent['mousemove'] = 0x400 /* SDL_MOUSEMOTION */;
1399-
SDL.DOMEventToSDLEvent['wheel'] = 0x403 /* SDL_MOUSEWHEEL */;
1400-
SDL.DOMEventToSDLEvent['touchstart'] = 0x700 /* SDL_FINGERDOWN */;
1401-
SDL.DOMEventToSDLEvent['touchend'] = 0x701 /* SDL_FINGERUP */;
1402-
SDL.DOMEventToSDLEvent['touchmove'] = 0x702 /* SDL_FINGERMOTION */;
1403-
SDL.DOMEventToSDLEvent['unload'] = 0x100 /* SDL_QUIT */;
1404-
SDL.DOMEventToSDLEvent['resize'] = 0x7001 /* SDL_VIDEORESIZE/SDL_EVENT_COMPAT2 */;
1405-
SDL.DOMEventToSDLEvent['visibilitychange'] = 0x200 /* SDL_WINDOWEVENT */;
1406-
SDL.DOMEventToSDLEvent['focus'] = 0x200 /* SDL_WINDOWEVENT */;
1407-
SDL.DOMEventToSDLEvent['blur'] = 0x200 /* SDL_WINDOWEVENT */;
1395+
SDL.DOMEventToSDLEvent['keydown'] = {{{ cDefs.SDL_KEYDOWN }}};
1396+
SDL.DOMEventToSDLEvent['keyup'] = {{{ cDefs.SDL_KEYUP }}};
1397+
SDL.DOMEventToSDLEvent['keypress'] = {{{ cDefs.SDL_TEXTINPUT }}};
1398+
SDL.DOMEventToSDLEvent['mousedown'] = {{{ cDefs.SDL_MOUSEBUTTONDOWN }}};
1399+
SDL.DOMEventToSDLEvent['mouseup'] = {{{ cDefs.SDL_MOUSEBUTTONUP }}};
1400+
SDL.DOMEventToSDLEvent['mousemove'] = {{{ cDefs.SDL_MOUSEMOTION }}};
1401+
SDL.DOMEventToSDLEvent['wheel'] = {{{ cDefs.SDL_MOUSEWHEEL }}};
1402+
SDL.DOMEventToSDLEvent['touchstart'] = {{{ cDefs.SDL_FINGERDOWN }}};
1403+
SDL.DOMEventToSDLEvent['touchend'] = {{{ cDefs.SDL_FINGERUP }}};
1404+
SDL.DOMEventToSDLEvent['touchmove'] = {{{ cDefs.SDL_FINGERMOTION }}};
1405+
SDL.DOMEventToSDLEvent['unload'] = {{{ cDefs.SDL_QUIT }}};
1406+
SDL.DOMEventToSDLEvent['resize'] = {{{ cDefs.SDL_VIDEORESIZE }}};
1407+
SDL.DOMEventToSDLEvent['visibilitychange'] = {{{ cDefs.SDL_WINDOWEVENT }}};
1408+
SDL.DOMEventToSDLEvent['focus'] = {{{ cDefs.SDL_WINDOWEVENT }}};
1409+
SDL.DOMEventToSDLEvent['blur'] = {{{ cDefs.SDL_WINDOWEVENT }}};
14081410

14091411
// These are not technically DOM events; the HTML gamepad API is poll-based.
14101412
// However, we define them here, as the rest of the SDL code assumes that
14111413
// all SDL events originate as DOM events.
1412-
SDL.DOMEventToSDLEvent['joystick_axis_motion'] = 0x600 /* SDL_JOYAXISMOTION */;
1413-
SDL.DOMEventToSDLEvent['joystick_button_down'] = 0x603 /* SDL_JOYBUTTONDOWN */;
1414-
SDL.DOMEventToSDLEvent['joystick_button_up'] = 0x604 /* SDL_JOYBUTTONUP */;
1414+
SDL.DOMEventToSDLEvent['joystick_axis_motion'] = {{{ cDefs.SDL_JOYAXISMOTION }}};
1415+
SDL.DOMEventToSDLEvent['joystick_button_down'] = {{{ cDefs.SDL_JOYBUTTONDOWN }}};
1416+
SDL.DOMEventToSDLEvent['joystick_button_up'] = {{{ cDefs.SDL_JOYBUTTONUP }}};
14151417
return 0; // success
14161418
},
14171419

@@ -1504,7 +1506,7 @@ var LibrarySDL = {
15041506
assert(!SDL.screen);
15051507
}
15061508

1507-
if (SDL.GL) flags = flags | 0x04000000; // SDL_OPENGL - if we are using GL, then later calls to SetVideoMode may not mention GL, but we do need it. Once in GL mode, we never leave it.
1509+
if (SDL.GL) flags = flags | {{{ cDefs.SDL_OPENGL }}}; // if we are using GL, then later calls to SetVideoMode may not mention GL, but we do need it. Once in GL mode, we never leave it.
15081510

15091511
SDL.screen = SDL.makeSurface(width, height, flags, true, 'screen');
15101512

@@ -1580,7 +1582,7 @@ var LibrarySDL = {
15801582

15811583
if (SDL.defaults.copyOnLock && !SDL.defaults.discardOnLock) {
15821584
// Copy pixel data to somewhere accessible to 'C/C++'
1583-
if (surfData.isFlagSet(0x00200000 /* SDL_HWPALETTE */)) {
1585+
if (surfData.isFlagSet({{{ cDefs.SDL_HWPALETTE }}})) {
15841586
// If this is needed then
15851587
// we should compact the data from 32bpp to 8bpp index.
15861588
// I think best way to implement this is use
@@ -1619,7 +1621,7 @@ var LibrarySDL = {
16191621
}
16201622

16211623
// Copy pixel data to image
1622-
if (surfData.isFlagSet(0x00200000 /* SDL_HWPALETTE */)) {
1624+
if (surfData.isFlagSet({{{ cDefs.SDL_HWPALETTE }}})) {
16231625
SDL.copyIndexedColorData(surfData);
16241626
} else if (!surfData.colors) {
16251627
var data = surfData.image.data;
@@ -1765,9 +1767,16 @@ var LibrarySDL = {
17651767
SDL_GetKeyState: () => _SDL_GetKeyboardState(0),
17661768

17671769
SDL_GetKeyName__proxy: 'sync',
1768-
SDL_GetKeyName__deps: ['$stringToNewUTF8'],
1770+
SDL_GetKeyName__deps: ['$stringToUTF8', 'realloc'],
17691771
SDL_GetKeyName: (key) => {
1770-
SDL.keyName ||= stringToNewUTF8('unknown key');
1772+
var name = '';
1773+
/* ASCII A-Z or 0-9 */
1774+
if ((key >= 97 && key <= 122) || (key >= 48 && key <= 57)) {
1775+
name = String.fromCharCode(key);
1776+
}
1777+
var size = lengthBytesUTF8(name) + 1;
1778+
SDL.keyName = _realloc(SDL.keyName, size);
1779+
stringToUTF8(name, SDL.keyName, size);
17711780
return SDL.keyName;
17721781
},
17731782

@@ -1917,7 +1926,7 @@ var LibrarySDL = {
19171926
var surfData = SDL.surfaces[surf];
19181927
assert(!surfData.locked); // but we could unlock and re-lock if we must..
19191928

1920-
if (surfData.isFlagSet(0x00200000 /* SDL_HWPALETTE */)) {
1929+
if (surfData.isFlagSet({{{ cDefs.SDL_HWPALETTE }}})) {
19211930
//in SDL_HWPALETTE color is index (0..255)
19221931
//so we should translate 1 byte value to
19231932
//32 bit canvas
@@ -1981,7 +1990,7 @@ var LibrarySDL = {
19811990
var surfData = SDL.surfaces[surf];
19821991
surfData.alpha = alpha;
19831992

1984-
if (!(flag & 0x00010000)) { // !SDL_SRCALPHA
1993+
if (!(flag & {{{ cDefs.SDL_SRCALPHA }}})) { // !SDL_SRCALPHA
19851994
surfData.alpha = 255;
19861995
}
19871996
},
@@ -2134,12 +2143,12 @@ var LibrarySDL = {
21342143
var state = 0;
21352144

21362145
if (Browser.pointerLock) {
2137-
state |= 0x01; // SDL_APPMOUSEFOCUS
2146+
state |= {{{ cDefs.SDL_APPMOUSEFOCUS }}};
21382147
}
21392148
if (document.hasFocus()) {
2140-
state |= 0x02; // SDL_APPINPUTFOCUS
2149+
state |= {{{ cDefs.SDL_APPINPUTFOCUS }}};
21412150
}
2142-
state |= 0x04; // SDL_APPACTIVE
2151+
state |= {{{ cDefs.SDL_APPACTIVE }}};
21432152

21442153
return state;
21452154
},

0 commit comments

Comments
 (0)