Send transform of window and buffer to server after they are created. 72/267972/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Thu, 9 Dec 2021 10:54:34 +0000 (19:54 +0900)
committerJoonbum Ko <joonbum.ko@samsung.com>
Tue, 14 Dec 2021 04:43:26 +0000 (13:43 +0900)
this patch is for fixing below case

1. create eglWidnowSurface(1) with wl_egl_window(1)
2. set window and buffer 90 transform with wl_egl_window(1)
3. destroy eglWindowSurface(1) of wl_egl_window(1)
4. set window and buffer 0 transform with wl_egl_window(1)
5. create eglWidnowSurface(2) with wl_egl_window(1)
7. set window transform 0 transform with wl_egl_window(1)
8. tpl does not send 0 transform to server

Change-Id: I8d83750f4ecd5791accecf4fe51681fe55b05cf1

src/tpl_wayland_egl.c
src/tpl_wl_egl_thread.c

index 113159d63ffa1099b5c4e0529ad7d570d9584e87..27509b19107018d2842cb695af6664dadc21edae 100755 (executable)
@@ -681,7 +681,7 @@ __tpl_wayland_egl_surface_init(tpl_surface_t *surface)
        surface->rotation = tizen_private->rotation;
        surface->rotation_capability = TPL_FALSE;
 
-       wayland_egl_surface->latest_transform = 0;
+       wayland_egl_surface->latest_transform = -1;
        wl_egl_window->resize_callback = (void *)__cb_client_window_resize_callback;
        wl_egl_window->destroy_window_callback = (void *)__cb_client_window_destroy_callback;
 
@@ -1446,6 +1446,7 @@ __tpl_wayland_egl_surface_dequeue_buffer(tpl_surface_t *surface, uint64_t timeou
        wayland_egl_buffer->bo = tbm_surface_internal_get_bo(tbm_surface, 0);
        wayland_egl_buffer->wayland_egl_surface = wayland_egl_surface;
        wayland_egl_buffer->transform = tizen_private->transform;
+       wayland_egl_buffer->window_transform = -1;
 
        if (wayland_egl_buffer->window_transform != tizen_private->window_transform) {
                wayland_egl_buffer->window_transform = tizen_private->window_transform;
index 1a96557b2a0f8f695cc7fc54c567b2e34cc651c1..4a53fd58827e4dc60a4023e1432d3ca882b4c37e 100755 (executable)
@@ -1677,7 +1677,7 @@ __tpl_wl_egl_surface_init(tpl_surface_t *surface)
        wl_egl_surface->use_render_done_fence  = TPL_FALSE;
        wl_egl_surface->set_serial_is_used     = TPL_FALSE;
 
-       wl_egl_surface->latest_transform       = 0;
+       wl_egl_surface->latest_transform       = -1;
        wl_egl_surface->render_done_cnt        = 0;
        wl_egl_surface->serial                 = 0;
 
@@ -2347,6 +2347,8 @@ _wl_egl_buffer_create(tpl_wl_egl_surface_t *wl_egl_surface,
                wl_egl_buffer->width                    = tbm_surface_get_width(tbm_surface);
                wl_egl_buffer->height                   = tbm_surface_get_height(tbm_surface);
 
+               wl_egl_buffer->w_transform              = -1;
+
                tpl_gmutex_init(&wl_egl_buffer->mutex);
                tpl_gcond_init(&wl_egl_buffer->cond);