Pointer lock api does not work (html5.h)

39 views
Skip to first unread message

Александр Гурьянов

unread,
Oct 20, 2019, 10:35:17 PM10/20/19
to emscripte...@googlegroups.com
Hi. Inside js-dos project I have long living bug about mouse locking
that didn't work. Yesterday I tried to fix it again, and I faced
problem that emscripten pointer lock api does not work as expected.

I used api in this way:

1) set callbacks:
// register no-op callbacks for defered events
emscripten_set_mousedown_callback("#canvas", NULL, false, [](int
eventType, const EmscriptenMouseEvent *mouseEvent, void *userData) {
return 0;
});

auto pointerLockChangeSet =
emscripten_set_pointerlockchange_callback("#canvas", NULL, false,
[](int eventType, const EmscriptenPointerlockChangeEvent
*pointerlockChangeEvent, void *userData) -> EM_BOOL {
printf("Received pointer lock change event\n");
return true;
}) == EMSCRIPTEN_RESULT_SUCCESS;
printf("Pointerlock callback set\n");

2) ask for current pointer lock state:
EmscriptenPointerlockChangeEvent lastChangeEvent;
auto haveLockInfo =
emscripten_get_pointerlock_status(&lastChangeEvent) ==
EMSCRIPTEN_RESULT_SUCCESS;
// use lastChangeEvent;

3) request for lock:
auto lockRequested = emscripten_request_pointerlock("#canvas",
true) == EMSCRIPTEN_RESULT_DEFERRED;

Step 3) always return EMSCRIPTEN_RESULT_DEFERRED as expected and then
browser lock mouse
Step 2) always works correct, every time when I asked for last state
of pointer lock then I recieve correct value (true when locked and
false when not).
In Step 1) pointerlockchange callback is set fine (I received
EMSCRIPTEN_RESULT_SUCCESS), but callback it self is never called. So I
need to ask about current status (step 2) periodically to get changes.

--
emcc (Emscripten gcc/clang-like replacement) 1.39.0 (commit
e047fe4c1ecfae6ba471ca43f2f630b79516706b)
https://github.com/caiiiycuk/js-dos/issues/63

Александр Гурьянов

unread,
Oct 21, 2019, 12:45:55 PM10/21/19
to emscripte...@googlegroups.com
https://github.com/emscripten-core/emscripten/issues/9681

пн, 21 окт. 2019 г. в 09:35, Александр Гурьянов <caii...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages