static GF_Err SDLVid_ProcessEvent(GF_VideoOutput *dr, GF_Event *evt) { if (!evt) { #ifndef SDL_WINDOW_THREAD SDLVID(); SDLVid_ProcessMessageQueue(ctx, dr); #endif return GF_OK; } switch (evt->type) { case GF_EVENT_SET_CURSOR: SDLVid_SetCursor(dr, evt->cursor.cursor_type); break; case GF_EVENT_SET_CAPTION: #ifdef SDL_WINDOW_THREAD { SDLVID(); if (ctx->sdl_th_state != SDL_STATE_RUNNING) break; } #endif SDL_WM_SetCaption(evt->caption.caption, NULL); break; case GF_EVENT_SHOWHIDE: /*the only way to have proper show/hide with SDL is to shutdown the video system and reset it up which we don't want to do since the setup MUST occur in the rendering thread for some configs (openGL)*/ return GF_NOT_SUPPORTED; case GF_EVENT_SIZE: SDLVid_ResizeWindow(dr, evt->size.width, evt->size.height); break; case GF_EVENT_MOVE: break; case GF_EVENT_VIDEO_SETUP: { SDLVID(); switch (evt->setup.opengl_mode) { case 0: /*force a resetup of the window*/ if (ctx->output_3d_type) { ctx->width = ctx->height = 0; } ctx->output_3d_type = 0; return SDLVid_SetBackbufferSize(dr, evt->setup.width, evt->setup.height, evt->setup.system_memory); case 1: /*force a resetup of the window*/ if (!ctx->output_3d_type) { ctx->width = ctx->height = 0; } ctx->output_3d_type = 1; return SDLVid_ResizeWindow(dr, evt->setup.width, evt->setup.height); case 2: /*find a way to do that in SDL*/ ctx->output_3d_type = 2; GF_LOG(GF_LOG_ERROR, GF_LOG_MMIO, ("[SDL] 3D not supported with SDL.\n")); return GF_NOT_SUPPORTED; } default: GF_LOG(GF_LOG_ERROR, GF_LOG_MMIO, ("[SDL] Trying to set an Unknown Mode %d !\n", evt->setup.opengl_mode)); return GF_NOT_SUPPORTED; } break; case GF_EVENT_SYS_COLORS: #ifdef WIN32 evt->sys_cols.sys_colors[0] = get_sys_col(COLOR_ACTIVEBORDER); evt->sys_cols.sys_colors[1] = get_sys_col(COLOR_ACTIVECAPTION); evt->sys_cols.sys_colors[2] = get_sys_col(COLOR_APPWORKSPACE); evt->sys_cols.sys_colors[3] = get_sys_col(COLOR_BACKGROUND); evt->sys_cols.sys_colors[4] = get_sys_col(COLOR_BTNFACE); evt->sys_cols.sys_colors[5] = get_sys_col(COLOR_BTNHIGHLIGHT); evt->sys_cols.sys_colors[6] = get_sys_col(COLOR_BTNSHADOW); evt->sys_cols.sys_colors[7] = get_sys_col(COLOR_BTNTEXT); evt->sys_cols.sys_colors[8] = get_sys_col(COLOR_CAPTIONTEXT); evt->sys_cols.sys_colors[9] = get_sys_col(COLOR_GRAYTEXT); evt->sys_cols.sys_colors[10] = get_sys_col(COLOR_HIGHLIGHT); evt->sys_cols.sys_colors[11] = get_sys_col(COLOR_HIGHLIGHTTEXT); evt->sys_cols.sys_colors[12] = get_sys_col(COLOR_INACTIVEBORDER); evt->sys_cols.sys_colors[13] = get_sys_col(COLOR_INACTIVECAPTION); evt->sys_cols.sys_colors[14] = get_sys_col(COLOR_INACTIVECAPTIONTEXT); evt->sys_cols.sys_colors[15] = get_sys_col(COLOR_INFOBK); evt->sys_cols.sys_colors[16] = get_sys_col(COLOR_INFOTEXT); evt->sys_cols.sys_colors[17] = get_sys_col(COLOR_MENU); evt->sys_cols.sys_colors[18] = get_sys_col(COLOR_MENUTEXT); evt->sys_cols.sys_colors[19] = get_sys_col(COLOR_SCROLLBAR); evt->sys_cols.sys_colors[20] = get_sys_col(COLOR_3DDKSHADOW); evt->sys_cols.sys_colors[21] = get_sys_col(COLOR_3DFACE); evt->sys_cols.sys_colors[22] = get_sys_col(COLOR_3DHIGHLIGHT); evt->sys_cols.sys_colors[23] = get_sys_col(COLOR_3DLIGHT); evt->sys_cols.sys_colors[24] = get_sys_col(COLOR_3DSHADOW); evt->sys_cols.sys_colors[25] = get_sys_col(COLOR_WINDOW); evt->sys_cols.sys_colors[26] = get_sys_col(COLOR_WINDOWFRAME); evt->sys_cols.sys_colors[27] = get_sys_col(COLOR_WINDOWTEXT); return GF_OK; #else return GF_NOT_SUPPORTED; #endif } return GF_OK; }
static GF_Err GAPI_ProcessEvent(GF_VideoOutput *dr, GF_Event *evt) { GAPICTX(dr); if (!evt) return GF_OK; switch (evt->type) { case GF_EVENT_SHOWHIDE: if (gctx->hWnd) ShowWindow(gctx->hWnd, evt->show.show_type ? SW_SHOW : SW_HIDE); break; case GF_EVENT_SIZE: /*nothing to do since we don't own the window*/ break; case GF_EVENT_VIDEO_SETUP: switch (evt->setup.opengl_mode) { case 0: #ifdef GPAC_USE_OGL_ES gctx->output_3d_type = 0; #endif return GAPI_InitBackBuffer(dr, evt->setup.width, evt->setup.height); #ifdef GPAC_USE_OGL_ES case 1: gctx->output_3d_type = 1; return GAPI_SetupOGL_ES(the_video_driver); case 2: gctx->output_3d_type = 2; return GAPI_SetupOGL_ES_Offscreen(the_video_driver, evt->setup.width, evt->setup.height); #else default: return GF_NOT_SUPPORTED; #endif } case GF_EVENT_SYS_COLORS: evt->sys_cols.sys_colors[0] = get_sys_col(COLOR_ACTIVEBORDER); evt->sys_cols.sys_colors[1] = get_sys_col(COLOR_ACTIVECAPTION); evt->sys_cols.sys_colors[2] = get_sys_col(COLOR_APPWORKSPACE); evt->sys_cols.sys_colors[3] = get_sys_col(COLOR_BACKGROUND); evt->sys_cols.sys_colors[4] = get_sys_col(COLOR_BTNFACE); evt->sys_cols.sys_colors[5] = get_sys_col(COLOR_BTNHIGHLIGHT); evt->sys_cols.sys_colors[6] = get_sys_col(COLOR_BTNSHADOW); evt->sys_cols.sys_colors[7] = get_sys_col(COLOR_BTNTEXT); evt->sys_cols.sys_colors[8] = get_sys_col(COLOR_CAPTIONTEXT); evt->sys_cols.sys_colors[9] = get_sys_col(COLOR_GRAYTEXT); evt->sys_cols.sys_colors[10] = get_sys_col(COLOR_HIGHLIGHT); evt->sys_cols.sys_colors[11] = get_sys_col(COLOR_HIGHLIGHTTEXT); evt->sys_cols.sys_colors[12] = get_sys_col(COLOR_INACTIVEBORDER); evt->sys_cols.sys_colors[13] = get_sys_col(COLOR_INACTIVECAPTION); evt->sys_cols.sys_colors[14] = get_sys_col(COLOR_INACTIVECAPTIONTEXT); evt->sys_cols.sys_colors[15] = get_sys_col(COLOR_INFOBK); evt->sys_cols.sys_colors[16] = get_sys_col(COLOR_INFOTEXT); evt->sys_cols.sys_colors[17] = get_sys_col(COLOR_MENU); evt->sys_cols.sys_colors[18] = get_sys_col(COLOR_MENUTEXT); evt->sys_cols.sys_colors[19] = get_sys_col(COLOR_SCROLLBAR); evt->sys_cols.sys_colors[20] = get_sys_col(COLOR_3DDKSHADOW); evt->sys_cols.sys_colors[21] = get_sys_col(COLOR_3DFACE); evt->sys_cols.sys_colors[22] = get_sys_col(COLOR_3DHIGHLIGHT); evt->sys_cols.sys_colors[23] = get_sys_col(COLOR_3DLIGHT); evt->sys_cols.sys_colors[24] = get_sys_col(COLOR_3DSHADOW); evt->sys_cols.sys_colors[25] = get_sys_col(COLOR_WINDOW); evt->sys_cols.sys_colors[26] = get_sys_col(COLOR_WINDOWFRAME); evt->sys_cols.sys_colors[27] = get_sys_col(COLOR_WINDOWTEXT); return GF_OK; } return GF_OK; }