GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — cpython/Python/emscripten_signal.c at 3.14 · python/cpython Expand file tree/ Copy pathemscripten_signal.cMore file actions 54 lines (49 loc) · 1.48 KB / Copy pathemscripten_signal.cFile metadata and controls54 lines (49 loc) · 1.48 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 // To enable signal handling, the embedder should: // 1. set Module.Py_EmscriptenSignalBuffer = some_shared_array_buffer; // 2. set the Py_EMSCRIPTEN_SIGNAL_HANDLING flag to 1 as follows: // Module.HEAP8[Module._Py_EMSCRIPTEN_SIGNAL_HANDLING] = 1 // // The address &Py_EMSCRIPTEN_SIGNAL_HANDLING is exported as // Module._Py_EMSCRIPTEN_SIGNAL_HANDLING. #include <emscripten.h> #include "Python.h" EM_JS(int, _Py_CheckEmscriptenSignals_Helper, (void), { if (!Module.Py_EmscriptenSignalBuffer) { return 0; } try { let result = Module.Py_EmscriptenSignalBuffer[0]; Module.Py_EmscriptenSignalBuffer[0] = 0; return result; } catch(e) { #if !defined(NDEBUG) console.warn("Error occurred while trying to read signal buffer:", e); #endif return 0; } }); EMSCRIPTEN_KEEPALIVE int Py_EMSCRIPTEN_SIGNAL_HANDLING = 0; void _Py_CheckEmscriptenSignals(void) { if (!Py_EMSCRIPTEN_SIGNAL_HANDLING) { return; } int signal = _Py_CheckEmscriptenSignals_Helper(); if (signal) { PyErr_SetInterruptEx(signal); } } #define PY_EMSCRIPTEN_SIGNAL_INTERVAL 50 int _Py_emscripten_signal_clock = PY_EMSCRIPTEN_SIGNAL_INTERVAL; void _Py_CheckEmscriptenSignalsPeriodically(void) { if (_Py_emscripten_signal_clock == 0) { _Py_emscripten_signal_clock = PY_EMSCRIPTEN_SIGNAL_INTERVAL; _Py_CheckEmscriptenSignals(); } else if (Py_EMSCRIPTEN_SIGNAL_HANDLING) { _Py_emscripten_signal_clock--; } } |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |