diff options
| author | Andre Weissflog <floooh@gmail.com> | 2019-02-16 20:34:25 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-02-16 20:34:25 +0100 |
| commit | 75a16e2ace39a5917a6296960f106d1223a9219a (patch) | |
| tree | c44eff2cc39b230551dcd387f0759136a9eab258 /sokol_app.h | |
| parent | 6537e3ed151b7906fb0d84f05fe1ac740517c9cd (diff) | |
Emscripten platform updates (#116)
* preparations for MINIMAL_RUNTIME
* better closure compiler compatibility
* replace deprecated functions with 'modern' equivalents
Diffstat (limited to 'sokol_app.h')
| -rw-r--r-- | sokol_app.h | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/sokol_app.h b/sokol_app.h index 25a512e0..6c77211d 100644 --- a/sokol_app.h +++ b/sokol_app.h @@ -780,7 +780,7 @@ _SOKOL_PRIVATE void _sapp_init_state(sapp_desc* desc, int argc, char* argv[]) { _sapp.framebuffer_height = _sapp.window_height; _sapp.sample_count = _sapp_def(_sapp.desc.sample_count, 1); _sapp.swap_interval = _sapp_def(_sapp.desc.swap_interval, 1); - _sapp.html5_canvas_name = _sapp_def(_sapp.desc.html5_canvas_name, "#canvas"); + _sapp.html5_canvas_name = _sapp_def(_sapp.desc.html5_canvas_name, "canvas"); _sapp.html5_canvas_resize = _sapp.desc.html5_canvas_resize; if (_sapp.desc.window_title) { _sapp_strcpy(_sapp.desc.window_title, _sapp.window_title, sizeof(_sapp.window_title)); @@ -1663,23 +1663,23 @@ EMSCRIPTEN_KEEPALIVE void _sapp_emsc_notify_keyboard_hidden(void) { #endif /* Javascript helper functions for mobile virtual keyboard input */ -EM_JS(void, _sapp_js_create_textfield, (), { - var inp = document.createElement("input"); - inp.type = "text"; - inp.id = "_sokol_app_input_element"; - inp.autocapitalize = "none"; - inp.addEventListener("focusout", function(e) { +EM_JS(void, _sapp_js_create_textfield, (void), { + var _sapp_inp = document.createElement("input"); + _sapp_inp.type = "text"; + _sapp_inp.id = "_sokol_app_input_element"; + _sapp_inp.autocapitalize = "none"; + _sapp_inp.addEventListener("focusout", function(_sapp_event) { __sapp_emsc_notify_keyboard_hidden() }); - document.body.append(x); + document.body.append(_sapp_inp); }); -EM_JS(void, _sapp_js_focus_textfield, (), { +EM_JS(void, _sapp_js_focus_textfield, (void), { document.getElementById("_sokol_app_input_element").focus(); }); -EM_JS(void, _sapp_js_unfocus_textfield, (), { +EM_JS(void, _sapp_js_unfocus_textfield, (void), { document.getElementById("_sokol_app_input_element").blur(); }); @@ -1773,11 +1773,11 @@ _SOKOL_PRIVATE EM_BOOL _sapp_emsc_size_changed(int event_type, const EmscriptenU return true; } -_SOKOL_PRIVATE void _sapp_emsc_frame(void) { - if (_sapp.first_frame) { - emscripten_set_main_loop_timing(EM_TIMING_RAF, _sapp.swap_interval); - } +_SOKOL_PRIVATE EM_BOOL _sapp_emsc_frame(double time, void* userData) { + _SOKOL_UNUSED(time); + _SOKOL_UNUSED(userData); _sapp_frame(); + return EM_TRUE; } _SOKOL_PRIVATE EM_BOOL _sapp_emsc_context_cb(int emsc_type, const void* reserved, void* user_data) { @@ -1795,8 +1795,8 @@ _SOKOL_PRIVATE EM_BOOL _sapp_emsc_context_cb(int emsc_type, const void* reserved } _SOKOL_PRIVATE EM_BOOL _sapp_emsc_mouse_cb(int emsc_type, const EmscriptenMouseEvent* emsc_event, void* user_data) { - _sapp.mouse_x = (emsc_event->canvasX * _sapp.dpi_scale); - _sapp.mouse_y = (emsc_event->canvasY * _sapp.dpi_scale); + _sapp.mouse_x = (emsc_event->targetX * _sapp.dpi_scale); + _sapp.mouse_y = (emsc_event->targetY * _sapp.dpi_scale); if (_sapp_events_enabled() && (emsc_event->button >= 0) && (emsc_event->button < SAPP_MAX_MOUSEBUTTONS)) { sapp_event_type type; bool is_button_event = false; @@ -2032,8 +2032,8 @@ _SOKOL_PRIVATE EM_BOOL _sapp_emsc_touch_cb(int emsc_type, const EmscriptenTouchE const EmscriptenTouchPoint* src = &emsc_event->touches[i]; sapp_touchpoint* dst = &_sapp.event.touches[i]; dst->identifier = src->identifier; - dst->pos_x = src->canvasX * _sapp.dpi_scale; - dst->pos_y = src->canvasY * _sapp.dpi_scale; + dst->pos_x = src->targetX * _sapp.dpi_scale; + dst->pos_y = src->targetY * _sapp.dpi_scale; dst->changed = src->isChanged; } _sapp.desc.event_cb(&_sapp.event); @@ -2158,7 +2158,7 @@ int main(int argc, char* argv[]) { } else { emscripten_get_element_css_size(_sapp.html5_canvas_name, &w, &h); - emscripten_set_resize_callback(0, 0, false, _sapp_emsc_size_changed); + emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, 0, false, _sapp_emsc_size_changed); } if (_sapp.desc.high_dpi) { _sapp.dpi_scale = emscripten_get_device_pixel_ratio(); @@ -2186,10 +2186,10 @@ int main(int argc, char* argv[]) { attrs.majorVersion = 2; } #endif - EMSCRIPTEN_WEBGL_CONTEXT_HANDLE ctx = emscripten_webgl_create_context(0, &attrs); + EMSCRIPTEN_WEBGL_CONTEXT_HANDLE ctx = emscripten_webgl_create_context(_sapp.html5_canvas_name, &attrs); if (!ctx) { attrs.majorVersion = 1; - ctx = emscripten_webgl_create_context(0, &attrs); + ctx = emscripten_webgl_create_context(_sapp.html5_canvas_name, &attrs); _sapp.gles2_fallback = true; } emscripten_webgl_make_context_current(ctx); @@ -2200,16 +2200,16 @@ int main(int argc, char* argv[]) { emscripten_set_mouseenter_callback(_sapp.html5_canvas_name, 0, true, _sapp_emsc_mouse_cb); emscripten_set_mouseleave_callback(_sapp.html5_canvas_name, 0, true, _sapp_emsc_mouse_cb); emscripten_set_wheel_callback(_sapp.html5_canvas_name, 0, true, _sapp_emsc_wheel_cb); - emscripten_set_keydown_callback(0, 0, true, _sapp_emsc_key_cb); - emscripten_set_keyup_callback(0, 0, true, _sapp_emsc_key_cb); - emscripten_set_keypress_callback(0, 0, true, _sapp_emsc_key_cb); + emscripten_set_keydown_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, 0, true, _sapp_emsc_key_cb); + emscripten_set_keyup_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, 0, true, _sapp_emsc_key_cb); + emscripten_set_keypress_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, 0, true, _sapp_emsc_key_cb); emscripten_set_touchstart_callback(_sapp.html5_canvas_name, 0, true, _sapp_emsc_touch_cb); emscripten_set_touchmove_callback(_sapp.html5_canvas_name, 0, true, _sapp_emsc_touch_cb); emscripten_set_touchend_callback(_sapp.html5_canvas_name, 0, true, _sapp_emsc_touch_cb); emscripten_set_touchcancel_callback(_sapp.html5_canvas_name, 0, true, _sapp_emsc_touch_cb); emscripten_set_webglcontextlost_callback(_sapp.html5_canvas_name, 0, true, _sapp_emsc_context_cb); emscripten_set_webglcontextrestored_callback(_sapp.html5_canvas_name, 0, true, _sapp_emsc_context_cb); - emscripten_set_main_loop(_sapp_emsc_frame, 0, 1); + emscripten_request_animation_frame_loop(_sapp_emsc_frame, 0); return 0; } #endif /* __EMSCRIPTEN__ */ |