Browse Source

EmscriptenApplication: fix handling of magic target constants

pull/480/head
Pablo Escobar 6 years ago
parent
commit
05f5be96db
  1. 22
      src/Magnum/Platform/EmscriptenApplication.cpp

22
src/Magnum/Platform/EmscriptenApplication.cpp

@ -524,7 +524,7 @@ void EmscriptenApplication::setupCallbacks(bool resizable) {
1.38.27 depending on -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1 1.38.27 depending on -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1
but we don't want to force this flag on the users so the behavior but we don't want to force this flag on the users so the behavior
handles both. */ handles both. */
char* keyboardListeningElement = reinterpret_cast<char*>(EM_ASM_INT({ int keyboardListeningElement = EM_ASM_INT({
var element = Module['keyboardListeningElement'] || document; var element = Module['keyboardListeningElement'] || document;
if(element === document) return 1; if(element === document) return 1;
@ -533,21 +533,21 @@ void EmscriptenApplication::setupCallbacks(bool resizable) {
return allocate(intArrayFromString(element.id), 'i8', ALLOC_NORMAL); return allocate(intArrayFromString(element.id), 'i8', ALLOC_NORMAL);
return 0; return 0;
})); });
#pragma GCC diagnostic pop #pragma GCC diagnostic pop
std::string keyboardListeningElementString; std::string keyboardListeningTargetString;
const char* keyboardListeningTarget = keyboardListeningElement; const char* keyboardListeningTarget = reinterpret_cast<char*>(keyboardListeningElement);
if(_deprecatedTargetBehavior && keyboardListeningElement == reinterpret_cast<char*>(1)) { if(_deprecatedTargetBehavior && keyboardListeningElement == 1) {
keyboardListeningTarget = "#document"; keyboardListeningTarget = "#document";
} else if(_deprecatedTargetBehavior && keyboardListeningElement == reinterpret_cast<char*>(2)) { } else if(_deprecatedTargetBehavior && keyboardListeningElement == 2) {
keyboardListeningTarget = "#window"; keyboardListeningTarget = "#window";
} else if(keyboardListeningElement) { } else if(keyboardListeningElement > 2) {
if(!_deprecatedTargetBehavior) if(!_deprecatedTargetBehavior)
keyboardListeningElementString = "#"; keyboardListeningTargetString = "#";
keyboardListeningElementString += keyboardListeningElement; keyboardListeningTargetString += keyboardListeningTarget;
std::free(keyboardListeningElement); std::free(reinterpret_cast<void*>(keyboardListeningElement));
keyboardListeningTarget = keyboardListeningElementString.data(); keyboardListeningTarget = keyboardListeningTargetString.data();
} }
/* Happens only if keyboardListeningElement was set, but did not have an /* Happens only if keyboardListeningElement was set, but did not have an

Loading…
Cancel
Save