![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/share/emscripten/tests/ |
Upload File : |
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <SDL/SDL.h> #include <SDL/SDL_image.h> #include <assert.h> #include <emscripten.h> SDL_Surface* screen; int testImage(const char* fileName) { printf("IMG_Load: %s\n", fileName); SDL_Surface *image = IMG_Load(fileName); if (!image) { printf("IMG_Load: %s\n", IMG_GetError()); return 0; } assert(image->format->BitsPerPixel == 32); assert(image->format->BytesPerPixel == 4); assert(image->pitch == 4*image->w); int result = image->w; SDL_BlitSurface (image, NULL, screen, NULL); SDL_FreeSurface (image); return result; } void ready(void *arg, const char *fileName) { printf("ready! %s (%d)\n", fileName, (int)arg); static int first = 1; static const char *seenName; static void *seenArg; if (first) { first = 0; seenName = fileName; seenArg = arg; } else { printf("%s ? %s == %d\n", fileName, seenName, strcmp(fileName, seenName)); assert(strcmp(fileName, seenName)); // different names assert(seenArg != arg); // different args testImage(seenName); free((void*)seenName); // As the API docs say, we are responsible for freeing the 'fake' names we are given SDL_Flip(screen); } } int main() { SDL_Init(SDL_INIT_VIDEO); screen = SDL_SetVideoMode(600, 450, 32, SDL_SWSURFACE); printf("prepare..\n"); #define SIZE 203164 FILE *f = fopen("screenshot.not", "rb"); char *buffer = malloc(SIZE); fread(buffer, SIZE, 1, f); fclose(f); emscripten_async_prepare_data(buffer, SIZE, "jpg", (void*)25, ready, NULL); emscripten_async_prepare_data(buffer, SIZE, "jpg", (void*)33, ready, NULL); // twice to see different filenames return 0; }