Merge pull request from eska014/html5-main-notif

Prevent sending MainLoop notifications before initialized
This commit is contained in:
Rémi Verschelde 2017-09-03 11:28:03 +02:00 committed by GitHub
commit 6a08f8288e

View file

@ -521,21 +521,6 @@ void OS_JavaScript::initialize(const VideoMode &p_desired, int p_video_driver, i
#undef SET_EM_CALLBACK #undef SET_EM_CALLBACK
#undef EM_CHECK #undef EM_CHECK
/* clang-format off */
EM_ASM_ARGS({
const send_notification = Module.cwrap('send_notification', null, ['number']);
const notifs = arguments;
(['mouseover', 'mouseleave', 'focus', 'blur']).forEach(function(event, i) {
Module.canvas.addEventListener(event, send_notification.bind(this, notifs[i]));
});
},
MainLoop::NOTIFICATION_WM_MOUSE_ENTER,
MainLoop::NOTIFICATION_WM_MOUSE_EXIT,
MainLoop::NOTIFICATION_WM_FOCUS_IN,
MainLoop::NOTIFICATION_WM_FOCUS_OUT
);
/* clang-format on */
#ifdef JAVASCRIPT_EVAL_ENABLED #ifdef JAVASCRIPT_EVAL_ENABLED
javascript_eval = memnew(JavaScript); javascript_eval = memnew(JavaScript);
ProjectSettings::get_singleton()->add_singleton(ProjectSettings::Singleton("JavaScript", javascript_eval)); ProjectSettings::get_singleton()->add_singleton(ProjectSettings::Singleton("JavaScript", javascript_eval));
@ -818,7 +803,23 @@ void OS_JavaScript::main_loop_begin() {
if (main_loop) if (main_loop)
main_loop->init(); main_loop->init();
/* clang-format off */
EM_ASM_ARGS({
const send_notification = Module.cwrap('send_notification', null, ['number']);
const notifs = arguments;
(['mouseover', 'mouseleave', 'focus', 'blur']).forEach(function(event, i) {
Module.canvas.addEventListener(event, send_notification.bind(null, notifs[i]));
});
},
MainLoop::NOTIFICATION_WM_MOUSE_ENTER,
MainLoop::NOTIFICATION_WM_MOUSE_EXIT,
MainLoop::NOTIFICATION_WM_FOCUS_IN,
MainLoop::NOTIFICATION_WM_FOCUS_OUT
);
/* clang-format on */
} }
bool OS_JavaScript::main_loop_iterate() { bool OS_JavaScript::main_loop_iterate() {
if (!main_loop) if (!main_loop)