https://github.com/emscripten-core/emscripten/issues/9681
пн, 21 окт. 2019 г. в 09:35, Александр Гурьянов <[email protected]>: > > 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 -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/CAKOm%3DVGSqHzLYv1TObys-qSSs5V2oE4KrgyaCcAb4TNOZ5hdTg%40mail.gmail.com.
