21 #include "../../SDL_internal.h"
23 #if SDL_VIDEO_DRIVER_EMSCRIPTEN
35 Uint32 Rmask, Gmask, Bmask, Amask;
53 *format = surface_format;
55 *pitch = surface->
pitch;
66 return SDL_SetError(
"Couldn't find framebuffer surface for window");
76 if (!Module[
'SDL2']) Module[
'SDL2'] = {};
77 var SDL2 = Module[
'SDL2'];
78 if (SDL2.ctxCanvas !== Module[
'canvas']) {
79 SDL2.ctx = Module[
'createContext'](Module[
'canvas'],
false,
true);
80 SDL2.ctxCanvas = Module[
'canvas'];
82 if (SDL2.w !== w || SDL2.h !== h || SDL2.imageCtx !== SDL2.ctx) {
83 SDL2.image = SDL2.ctx.createImageData(w, h);
86 SDL2.imageCtx = SDL2.ctx;
88 var data = SDL2.image.data;
89 var
src = pixels >> 2;
92 if (typeof CanvasPixelArray !==
'undefined' && data instanceof CanvasPixelArray) {
100 data[
dst ] = val & 0xff;
101 data[dst+1] = (val >> 8) & 0xff;
102 data[dst+2] = (val >> 16) & 0xff;
108 if (SDL2.data32Data !== data) {
109 SDL2.data32 =
new Int32Array(data.buffer);
110 SDL2.data8 =
new Uint8Array(data.buffer);
112 var data32 = SDL2.data32;
122 data32.set(HEAP32.subarray(src, src + num));
123 var data8 = SDL2.data8;
154 SDL2.ctx.putImageData(SDL2.image, 0, 0);
156 }, surface->
w, surface->
h, surface->
pixels);