aboutsummaryrefslogtreecommitdiff
path: root/sokol_app.h
diff options
context:
space:
mode:
authorAndre Weissflog <floooh@gmail.com>2019-02-16 20:34:25 +0100
committerGitHub <noreply@github.com>2019-02-16 20:34:25 +0100
commit75a16e2ace39a5917a6296960f106d1223a9219a (patch)
treec44eff2cc39b230551dcd387f0759136a9eab258 /sokol_app.h
parent6537e3ed151b7906fb0d84f05fe1ac740517c9cd (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.h50
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__ */