// Destroy private tls
_evas_gl_internal_tls_destroy(evas_gl);
+ // Unset PreRotation
+ if (evas_gl->evas->engine.func->gl_prerotation_unset)
+ evas_gl->evas->engine.func->gl_prerotation_unset(evas_gl->evas->engine.data.output);
+
// Reset current evas gl tls
if (_current_evas_gl_key && (evas_gl == eina_tls_get(_current_evas_gl_key)))
eina_tls_set(_current_evas_gl_key, NULL);
void *(*ector_surface_cache_get) (void *data, void *key);
void (*gl_get_pixels) (void *data, Evas_Object_Image_Pixels_Get_Cb cb, void *get_pixels_data, Evas_Object *o, void *image);
+
+ // Unset PreRotation
+ void (*gl_prerotation_unset) (void *data);
};
struct _Evas_Image_Save_Func
(evgl_engine->funcs->native_win_prerotation_set))
{
if (!evgl_engine->funcs->native_win_prerotation_set(eng_data))
- ERR("Prerotation does not work");
+ DBG("Prerotation does not work");
}
//
eng_ector_end,
eng_ector_surface_create,
eng_ector_surface_cache_set,
- eng_ector_surface_cache_get
+ eng_ector_surface_cache_get,
/* FUTURE software generic calls go here */
+ NULL //gl_prerotation_unset
};
if (!(eng_get_ob(re)->support_pre_rotation)) return 0;
if (eng_get_ob(re)->gl_context->pre_rotated) return 0;
- _evas_native_win_pre_rotation_set(eng_get_ob(re)->info->info.win, eng_get_ob(re)->info->info.rotation);
+ _evas_native_win_pre_rotation_set(eng_get_ob(re)->win, eng_get_ob(re)->info->info.rotation);
// re->win's h & w are not modified
eng_get_ob(re)->rot = 0;
(ob->info->info.rotation != ob->rot) ||
(ob->gl_context->pre_rotated))
{
- //TIZEN_ONLY(20161121) : Support PreRotation
+ // Support PreRotation
if (ob->support_pre_rotation && ob->gl_context->pre_rotated)
{
ob->gl_context->pre_rotated = EINA_FALSE;
}
static void
+eng_gl_prerotation_unset(void *data)
+{
+ Render_Engine *re;
+ if (!(re = (Render_Engine *)data)) return;
+
+ eng_get_ob(re)->gl_context->pre_rotated = EINA_FALSE;
+}
+
+static void
_native_cb_bind(void *data EINA_UNUSED, void *image)
{
Evas_GL_Image *img;
ORD(gl_current_context_get);
ORD(gl_error_get);
+ //Unset PreRotation
+ ORD(gl_prerotation_unset);
+
evas_gl_thread_link_init();
gl_symbols();
gw->depth_bits = depth_bits;
gw->stencil_bits = stencil_bits;
gw->msaa_bits = msaa_bits;
- //TIZEN_ONLY(20161121):Support PreRotation
+ //Support PreRotation
gw->support_pre_rotation = 0;
context_attrs[0] = EGL_CONTEXT_CLIENT_VERSION;
return NULL;
}
- //TIZEN_ONLY(20161121):Support PreRotation
+ //Support PreRotation
if (!getenv("EVAS_GL_PREROTATION_DISABLE") && glsym_wl_egl_win_get_capabilities)
{
int prerotation_cap = EVAS_WL_EGL_WINDOW_CAPABILITY_NONE;
{
ob->w = w;
ob->h = h;
- ob->rot = rot;
- if (ob->support_pre_rotation && ob->gl_context->pre_rotated)
- ob->rot = 0;
+ if (ob->support_pre_rotation && ob->gl_context->pre_rotated)
+ ob->rot = 0;
+ else
+ ob->rot = rot;
+
eng_window_use(ob);
glsym_evas_gl_common_context_resize(ob->gl_context, w, h, ob->rot,1);