int Tizen_Indicator_GLES_Init(SDL_Window* window)
{
SDL_WindowData *wind = window->driverdata;
- if(wind->init_indicator) return 0;
+ if(!wind->need_indicator) return 0;
int screen_w, screen_h;
ecore_wl_screen_size_get(&screen_w, &screen_h);
ecore_main_loop_iterate();
Tizen_IndicatorProcessEvent(window, wind->rotation);
- wind->init_indicator = SDL_TRUE;
+ wind->need_indicator = SDL_FALSE;
return 1;
}
void Tizen_DrawIndicator(SDL_Window *window)
{
SDL_WindowData* wdata = (SDL_WindowData*)window->driverdata;
- if (wdata->received_rotation == 1) {
- ecore_wl_window_rotation_change_done_send(wdata->window);
- wdata->received_rotation = 0;
- }
if(!(window->flags & SDL_WINDOW_FULLSCREEN) && !(window->flags & SDL_WINDOW_BORDERLESS) && wdata->indicator_show)
{
if(wdata->last_indicator_showtime + 3000 < SDL_GetTicks())
SDL_GLContext
Tizen_GLES_CreateContext(_THIS, SDL_Window *window)
{
- SDL_GLContext context;
+ SDL_GLContext context = SDL_EGL_CreateContext(_this, ((SDL_WindowData *) window->driverdata)->egl_surface);
+ SDL_VideoData *data = (SDL_VideoData *) (SDL_GetVideoDevice()->driverdata);
+ SDL_WindowData *wind = window->driverdata;
+ wind->need_indicator = SDL_TRUE;//Init
- context = SDL_EGL_CreateContext(_this, ((SDL_WindowData *) window->driverdata)->egl_surface);
+ if(data->current_thread != SDL_GetThreadID(0))
+ {
+ wind->need_indicator = SDL_FALSE;
+ return context;
+ }
if(!(window->flags & SDL_WINDOW_FULLSCREEN) && !(window->flags & SDL_WINDOW_BORDERLESS))
{
if(!Tizen_Indicator_GLES_Init(window))
{
+ wind->need_indicator = SDL_FALSE;//Fail
SDL_LogError(SDL_LOG_CATEGORY_ASSERT, "Indicator GLES init error!");
}
}
Tizen_GLES_SwapWindow(_THIS, SDL_Window *window)
{
SDL_WindowData* wdata = (SDL_WindowData*)window->driverdata;
- if(!(window->flags & SDL_WINDOW_FULLSCREEN) && !(window->flags & SDL_WINDOW_BORDERLESS) && !wdata->init_indicator)
+ if(!(window->flags & SDL_WINDOW_FULLSCREEN) && !(window->flags & SDL_WINDOW_BORDERLESS) && wdata->need_indicator)
{
- Tizen_Indicator_GLES_Init(window);
+ if(!Tizen_Indicator_GLES_Init(window))
+ {
+ wdata->need_indicator = SDL_FALSE;//Fail
+ SDL_LogError(SDL_LOG_CATEGORY_ASSERT, "Indicator GLES init error!");
+ }
}
Tizen_DrawIndicator(window);
+
+ if (wdata->received_rotation == 1) {
+ ecore_wl_window_rotation_change_done_send(wdata->window);
+ wdata->received_rotation = 0;
+ }
+
SDL_EGL_SwapBuffers(_this, ((SDL_WindowData *) window->driverdata)->egl_surface);
}