compositor: Keep flip value 50/321250/1
authorSeunghun Lee <shiin.lee@samsung.com>
Tue, 18 Mar 2025 02:01:30 +0000 (11:01 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Tue, 18 Mar 2025 04:23:29 +0000 (13:23 +0900)
The flip value should be preserved in the surface.
If it needs to be ignored, the caller should handle it themselves.

This fixes the bug not working flip introduced from the commit,
4749eaef.

Change-Id: If5b48c01265c1d12217a98fc484f2780f1e7b55f

src/bin/server/e_comp_wl_buffer.c
src/bin/server/e_compositor.c

index 84143a95a4738ecc42ff4f5f4c45138aee6a26a6..28d17c8ebaeb1f9a2409cc62561c21aca978feb5 100644 (file)
@@ -578,5 +578,8 @@ e_comp_wl_buffer_viewport_wait_for_transform_change_set(E_Comp_Wl_Buffer_Viewpor
 EINTERN enum wl_output_transform
 e_comp_wl_buffer_window_rotation_get(E_Comp_Wl_Buffer *buffer)
 {
-   return buffer->transform;
+  /* Ignore the flip value since there is no concept of flip in window
+   * rotation.
+   */
+  return buffer->transform & 0x3;
 }
index 0ceced2bed097b4833de67399ac6c8dc10844a34..8722616e853134b1c49aa8449d905fdafe2a4c43 100644 (file)
@@ -444,7 +444,7 @@ EINTERN enum wl_output_transform
 e_surface_buffer_transform_get(E_Surface *surface)
 {
    E_Comp_Wl_Buffer *buffer;
-   enum wl_output_transform buffer_transform;
+   enum wl_output_transform buffer_transform, flip, orientation;
 
    buffer_transform = surface->base.scaler.buffer_viewport.buffer.transform;
    buffer = surface->base.buffer_ref.buffer;
@@ -460,11 +460,9 @@ e_surface_buffer_transform_get(E_Surface *surface)
     * To return the actual buffer transform set by the client, we need to
     * subtract the window rotation value from the buffer_transform.
     */
-
-   /* ignore the flip value when calculating transform because the screen rotation
-    * functionality doesn't consider the flip output transform currently
-    */
-   return (4 + (buffer_transform & 0x3) - e_comp_wl_buffer_window_rotation_get(buffer)) & 0x3;
+   flip = buffer_transform & ~0x3;
+   orientation = buffer_transform & 0x3;
+   return flip | ((4 + orientation - e_comp_wl_buffer_window_rotation_get(buffer)) & 0x3);
 }
 
 EINTERN E_Comp_Wl_Buffer *