From a9a0d0fb15cc5e028dbf8dab8b46d3dc197c4678 Mon Sep 17 00:00:00 2001 From: Guilherme Felipe Date: Mon, 8 Jul 2019 17:37:18 -0300 Subject: Fix cursor blinking in integrated GPUs Optimization for Input::set_custom_mouse_cursor when used inside _process function. (Avoids cursor blinking in low end devices) --- platform/javascript/os_javascript.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'platform/javascript/os_javascript.cpp') diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp index d96ffc3a55..5363cd4af7 100644 --- a/platform/javascript/os_javascript.cpp +++ b/platform/javascript/os_javascript.cpp @@ -448,6 +448,18 @@ void OS_JavaScript::set_cursor_shape(CursorShape p_shape) { void OS_JavaScript::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) { if (p_cursor.is_valid()) { + + Map >::Element *cursor_c = cursors_cache.find(p_shape); + + if (cursor_c) { + if (cursor_c->get()[0] == p_cursor && cursor_c->get()[1] == p_hotspot) { + set_cursor_shape(p_shape); + return; + } + + cursors_cache.erase(p_shape); + } + Ref texture = p_cursor; Ref atlas_texture = p_cursor; Ref image; @@ -551,6 +563,11 @@ void OS_JavaScript::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_s cursors[p_shape] = url; + Vector params; + params.push_back(p_cursor); + params.push_back(p_hotspot); + cursors_cache.insert(p_shape, params); + } else if (cursors[p_shape] != "") { /* clang-format off */ EM_ASM({ -- cgit v1.2.3