platform/core/uifw/libtpl-egl.git
7 months agoPackage version up to 1.9.23 55/299055/2 accepted/tizen_7.0_unified tizen_7.0 accepted/tizen/7.0/unified/20230920.022057
jinbong, Lee [Tue, 19 Sep 2023 05:11:41 +0000 (14:11 +0900)]
Package version up to 1.9.23

Change-Id: Ic5e803aa4f428aca9a50376299bb2688d135a304

7 months agoMove wl_display_flush after wayland_tbm_client_destroy_buffer 51/299051/4
jinbong, Lee [Tue, 19 Sep 2023 04:50:56 +0000 (13:50 +0900)]
Move wl_display_flush after wayland_tbm_client_destroy_buffer

 - When wayland_tbm_client_destroy_buffer() is called,
   then we need to send message to server as soon as possible

Change-Id: If8987af4ca9c7c57da2b46a2ceba680c404ddf6e

7 months agoPackage version up to 1.9.22 01/299001/2
jinbong, Lee [Mon, 18 Sep 2023 06:36:36 +0000 (15:36 +0900)]
Package version up to 1.9.22

Change-Id: Ie7cf5259f5ec3bff78dfab1f41d8bead0d7d9916

7 months agoEnqueued tbm_surface is needed to unref when surface's finalize is called 97/298997/2
jinbong, Lee [Mon, 18 Sep 2023 06:33:16 +0000 (15:33 +0900)]
Enqueued tbm_surface is needed to unref when surface's finalize is called

 - If main thread called __tpl_wl_egl_surface_fini(),
   then sometimes enqueued buffer can be remained before acquire.
   so in that case tbm_surface must be unreferenced.

Change-Id: Ib410f93172142bb68cda16b6d01bc758a20ae2a5

7 months agoProtect wl_egl_buffer->wl_buffer with mutex_lock 89/298989/1
jinbong, Lee [Mon, 18 Sep 2023 06:25:15 +0000 (15:25 +0900)]
Protect wl_egl_buffer->wl_buffer with mutex_lock

 - wl_egl_buffer->wl_buffer is must protected when call wl_egl_display && wl_egl_display->wl_tbm_client

Change-Id: Ic81a1dbb7e40902aa19f4a99eefe1d22e7aa2549

8 months agoPackage version up to 1.9.21 83/298083/1
jinbong, Lee [Thu, 31 Aug 2023 06:09:33 +0000 (15:09 +0900)]
Package version up to 1.9.21

Change-Id: I5436f1704cf4e0d65770b952e7043223c463f674

8 months agoRemove double free situation 82/298082/1 accepted/tizen/7.0/unified/20230907.180823
jinbong, Lee [Thu, 31 Aug 2023 06:06:25 +0000 (15:06 +0900)]
Remove double free situation

 - if (source->fd_type == FD_TYPE_FENCE && source->type == SOURCE_TYPE_DISPOSABLE)
   then g_source_remove_unix_fd, g_source_destroy, g_source_unref is called twice for source->gsource.
 - it can cause error like that free already freed memory or free with invalid pointer (garbage value)

Change-Id: Ibbbd3842674de20f6cbfbf1af689a20aac680138

9 months agoPackage version up to 1.9.20 24/296024/1 sandbox/jbko/devel70 accepted/tizen/7.0/unified/20230720.082040
Joonbum Ko [Tue, 18 Jul 2023 11:28:24 +0000 (20:28 +0900)]
Package version up to 1.9.20

Change-Id: Ib332c673dbf12335e0410743a5cd50a458f772e4
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
9 months agowl_vk: untrack the swapchain_buffers when destroy_swapchain called 20/296020/2
Joonbum Ko [Tue, 18 Jul 2023 10:40:25 +0000 (19:40 +0900)]
wl_vk: untrack the swapchain_buffers when destroy_swapchain called

Change-Id: I72ed5fdf2fec9f00fa25e5bc87ea26501d1042f9
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
9 months agoPackage version up to 1.9.19 01/296001/1
Joonbum Ko [Mon, 17 Jul 2023 10:43:20 +0000 (19:43 +0900)]
Package version up to 1.9.19

Change-Id: I7bbb1e6f5063d15af52f1289efcf518fe5ec2ec4
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
9 months agowl_egl: close fence_fd when gsource finalized 00/296000/1
Joonbum Ko [Tue, 11 Jul 2023 06:33:48 +0000 (15:33 +0900)]
wl_egl: close fence_fd when gsource finalized

 - Even though when main thread have called tpl_gsource_destroy for
  fence_waiting_source, which has not yet signaled, gsource may not be
  completely destroyed because it might be in dispatch queue in g_main_context.

 - In this case, if the fence_waiting_source is dispatched, it can try
  to commit with the invalid wl_egl_buffer that has already been freed.

 - This commit makes to prevent operating with an invalid wl_egl_buffer
  and to close fence_fd properly.

Change-Id: I6ff30925f1bed6806017d408bf1bf067eab6624b
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
9 months agoutils_gthread: add enum type to distinguish the fd type 99/295999/1
Joonbum Ko [Mon, 10 Jul 2023 11:06:47 +0000 (20:06 +0900)]
utils_gthread: add enum type to distinguish the fd type

Change-Id: Ice04ab144047100b400912bf259dc45855866fb2
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
9 months agowl_vk: change the event message processing 98/295998/1
Joonbum Ko [Mon, 10 Jul 2023 08:24:02 +0000 (17:24 +0900)]
wl_vk: change the event message processing

Change-Id: I8c7de6985f316df39a611d7002ece3b57e96ca4a
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
12 months agoPackage version up to 1.9.18 40/291840/1
Joonbum Ko [Mon, 24 Apr 2023 04:58:52 +0000 (13:58 +0900)]
Package version up to 1.9.18

Change-Id: Ief6ef1b6689e787f408e0f89931da971959e6bfb
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
12 months agowl_egl: Initialize vblank_done flag when dequeue timeout occured 14/291414/1
Joonbum Ko [Fri, 14 Apr 2023 10:00:36 +0000 (19:00 +0900)]
wl_egl: Initialize vblank_done flag when dequeue timeout occured

 - Rarely, even if client cannot receive vblank event from tdm server,
  timeout may occur in can_dequeue.
 - In this case, if wl_egl_surface->vblank_done flag
  is not initialized to TPL_TRUE, problem situation may occur
  waiting vblank without calling tdm_client_vblank_wait
  after force_flush(can_dequeue_timeout).

Change-Id: If3f8eee13b5ae91a3728f189f53aa25720696b12
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
13 months agoPackage version up to 1.9.17 12/290112/2
jinbong, Lee [Mon, 20 Mar 2023 08:08:37 +0000 (17:08 +0900)]
Package version up to 1.9.17

Change-Id: I529a81e36a0dec7bb624fdb92b5ad05839558090

13 months agowl_egl : remive wl_egl_buffer in vblank's waiting buffers when wl_egl_buffer is freed 35/290035/2
jinbong, Lee [Fri, 17 Mar 2023 11:36:27 +0000 (20:36 +0900)]
wl_egl : remive wl_egl_buffer in vblank's waiting buffers when wl_egl_buffer is freed

  - Bug fix
   . if __cb_wl_egl_buffer_free is called then some wl_egl_buffer can be in waiting buffers for vblank.
     so it must be removed it before wl_egl_buffer is freed.

Change-Id: Id52c34e6dd9975ac9e37686476c97fe415631eec

13 months agoPackage version up to 1.9.16 22/289422/1
Joonbum Ko [Tue, 7 Mar 2023 10:31:34 +0000 (19:31 +0900)]
Package version up to 1.9.16

Change-Id: Idf4b6689e8da6664cd43cf67c805df9a5355b28c
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
14 months agowl_egl: Implement the backend function of fence_sync_is_available 21/289421/1
Joonbum Ko [Fri, 27 Jan 2023 11:16:44 +0000 (20:16 +0900)]
wl_egl: Implement the backend function of fence_sync_is_available

Change-Id: I7e6a6891ff12b6869e66cf3a2d5f64098b04cb94
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
14 months agoAdd new API checks if fence sync is available 20/289420/1
Joonbum Ko [Fri, 27 Jan 2023 11:08:05 +0000 (20:08 +0900)]
Add new API checks if fence sync is available

/**
 * Check the surface can support fence sync mechanism.
 *
 * It is recommended that checking fence sync is available
 * for every frame because the results may change depending on
 * frontbuffer rendering is activated or not.
 *
 * @param surface surface to check fence sync is available.
 * @return TPL_TRUE if tpl_surface can support it.
 */
tpl_bool_t
tpl_surface_fence_sync_is_available(tpl_surface_t *surface);

 - This API helps DDK to determine whether to deliver the acquire_fence
  to signal the render complete when call the surface_enqueue.
 - In backend where waiting fence is not implemented,
  the result of fixed to TPL_FALSE will be returned.
 - The result from the backend with the waiting fence implementation
  depends on whether the frontbuffer rendering is activated.

Change-Id: I779718fdc7e8efc7890e17b0d4df4d81974a7907
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
14 months agowayland-egl-tizen: Add description of set_frontbuffer_mode 19/289419/1
Joonbum Ko [Thu, 12 Jan 2023 08:15:20 +0000 (17:15 +0900)]
wayland-egl-tizen: Add description of set_frontbuffer_mode

Change-Id: Ic9e966c1b7b7f4064996765cb5e4f63cd55f813a
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
14 months agowl_egl: support for frontbuffer mode set by surface 18/289418/1
Joonbum Ko [Thu, 12 Jan 2023 07:16:50 +0000 (16:16 +0900)]
wl_egl: support for frontbuffer mode set by surface

 - Patch for supporting this API.
  wl_egl_window_tizen_set_frontbuffer_mode()

 AS-IS:
 - If the application, which wants to use frontbuffer rendering,
  sets the frontbuffer mode using setenv(), EGL driver checks whether
  frontbuffer mode is set using getenv() and if it true calls
  tpl_surface_set_frontbuffer_mode().

 PROBLEMS:
 - The operation using setenv()/getenv() is not thread safe.
 - Using env value to set frontbuffer mode cannot manage on/off in runtime.
 - Using env value to set frontbuffer mode cannot set by surface.

 TO-BE:
 - Application would be better to use this API
   wl_egl_window_tizen_set_frontbuffer_mode()
 - This API makes supports the setting of frontbuffer mode
  to the desired surface(window).
 - This API gurantee thread safety using tpl_surface object lock.
 - Using this API can help application to turn on/off
  the frontbuffer mode in runtime.

Change-Id: I608309869dcb9d0bd0ba42c7e54afee6da1b5e04
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
15 months agoPackage version up to 1.9.15 42/286342/2 accepted/tizen/7.0/unified/20230116.165316
Joonbum Ko [Wed, 4 Jan 2023 07:54:57 +0000 (16:54 +0900)]
Package version up to 1.9.15

Change-Id: Ibbc0967874abfadace2c64a6a1cba10f90a3dc23
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
15 months agowl_egl_thread: prepare for the failure of pause_in_idle 41/286341/2
Joonbum Ko [Wed, 4 Jan 2023 07:49:41 +0000 (16:49 +0900)]
wl_egl_thread: prepare for the failure of pause_in_idle

 - The calling tpl_gthread_pause_in_idle() move from force_flush()
  to outside.
 - Add locking wl_event_mutex after trying tpl_gthread_pause_in_idle.
 - Locking wl_event_mutex is a secondary means of preparing for
  the failure of tpl_gthread_pause_in_idle().
   If tpl_gthread_pause_in_idle()is successful,
  locking wl_event_mutex does not affect.

Change-Id: I35132da013f67921c0f6deecc0909118461f3872
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
15 months agoutils_gthread: cancel pause when wait_idle failed 40/286340/2
Joonbum Ko [Wed, 4 Jan 2023 07:29:57 +0000 (16:29 +0900)]
utils_gthread: cancel pause when wait_idle failed

 - If the tpl_gthread_wait_idle fails with timeout,
  it should be unlock pause_mutex immediately.

Change-Id: If33cc3c0b617ca34bb63d110d927e0dd7c022526
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
16 months agowl_egl: Delete calling wait_idle in surface_fini 09/285109/1
Joonbum Ko [Tue, 6 Dec 2022 08:51:24 +0000 (17:51 +0900)]
wl_egl: Delete calling wait_idle in surface_fini

 - tpl_gthread_wait_idle will be called in tpl_gthread_pause_in_idle()
   tpl_gthread_pause_in_idle will be called in buffer_clear()
   So, calling wait_idle() is duplicated & meaningless operation

Change-Id: I50b2aa2e73f5a22be5860ab3e6be241def2d862f
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
17 months agoutils_gthread: Prevent deadlock caused by wait_idle 93/284993/1
Joonbum Ko [Fri, 2 Dec 2022 07:17:32 +0000 (16:17 +0900)]
utils_gthread: Prevent deadlock caused by wait_idle

 Deadlock situation: Multi-threaded and multi surfaces for each thread

                        T2: call pause_in_idle()->wait_idle()
                            cond_wait() until idle signaled
 T1: call wait_idle()
     wait for lock idle_mutex
                        T2: _thread_idle_cb unlock idle_mutex,
                           set is_idle to TPL_TRUE
                           and wait to lock pause_mutex
 T1: change is_idle to TPL_FALSE
     cond_wait()
                        T2: cannot exit from while loop
                           still cond_wait()

 - is_idle changing should be set TPL_FALSE after cond_wait finished

Change-Id: I44292e486a1b9f686ec28bc0ae10ddedf94a48e3
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
17 months agoPackage version up to 1.9.14 75/284975/1 accepted/tizen/7.0/unified/20221206.171059
Joonbum Ko [Fri, 2 Dec 2022 01:52:44 +0000 (10:52 +0900)]
Package version up to 1.9.14

Change-Id: Id42e31cefc898f35fb9d84a8f949513a77eac515
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
17 months agoutils_gthread: Add missed initializing paused flag 74/284974/1
Joonbum Ko [Fri, 2 Dec 2022 01:51:23 +0000 (10:51 +0900)]
utils_gthread: Add missed initializing paused flag

 This missed line can cause deadlock issue.

Change-Id: I8d098e79010133dec4d7cc2cec071213cd02ec1a
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
17 months agoPackage version up to 1.9.13 94/284894/2
jinbong, Lee [Wed, 30 Nov 2022 06:59:49 +0000 (15:59 +0900)]
Package version up to 1.9.13

Change-Id: I73f1638107fb67870bbc782cf970de7e35e2ff47

17 months agoremove vblank's waiting_buffers in _tbm_queue_force_flush for prevent committing... 93/284893/2
jinbong, Lee [Wed, 30 Nov 2022 06:47:33 +0000 (15:47 +0900)]
remove vblank's waiting_buffers in _tbm_queue_force_flush for prevent committing flushed tbm_surface

Change-Id: Ic91aa678659b12c9ce80bce87504deef2e4299af

17 months agoutils_gthread: Change to use g_cond_wait_until to wait idle 87/284887/2
Joonbum Ko [Wed, 30 Nov 2022 04:47:29 +0000 (13:47 +0900)]
utils_gthread: Change to use g_cond_wait_until to wait idle

 - In some cases, signal was sent by idle_callback but
  there is a problem that this signal is lost and g_cond_wait
  cannot be awakened.

 - Above case can cause deadlock problem.

 - So set 200ms timeout ms with using g_cond_wait_until instead of
  g_cond_wait.

Change-Id: Ib0a549616f74a9fb39e78f7b37b1b8b09e16031d
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
17 months agoPackage version up to 1.9.12 21/284521/2
Joonbum Ko [Fri, 18 Nov 2022 08:40:21 +0000 (17:40 +0900)]
Package version up to 1.9.12

Change-Id: I24145794da2f4bd1505ee64518a427092c6472de
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
17 months agowl_egl: Set last_enq_buffer before tbm enqueue 20/284520/2
Joonbum Ko [Fri, 18 Nov 2022 08:30:17 +0000 (17:30 +0900)]
wl_egl: Set last_enq_buffer before tbm enqueue

 - Since the operation from queue_enqueue to surface_commit
  can be done at a time slice in thread, last_enq_buffer
  must be set to enqueued tbm_surface before tbm queue enqueue
  to initialize with NULL when do surface_commit.

Change-Id: I8b753abf44f92d4de4dab43185a7a29cb30c59fd
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
17 months agowl_egl: Use buffers list instead of buffers array 19/284519/2
Joonbum Ko [Fri, 18 Nov 2022 08:21:49 +0000 (17:21 +0900)]
wl_egl: Use buffers list instead of buffers array

 - If surface use array to track buffers,
  index management is difficult and difficult
  to assign a suitable size.

 - The use of list can reduce some of the potential problems
  that can occur from complex management.

Change-Id: I9a4574f542cde0ad8d32fed575d03e1a2c861b0b
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
17 months agowl_egl: Apply pause and wait_idle at buffer clear 18/284518/1
Joonbum Ko [Thu, 17 Nov 2022 08:33:11 +0000 (17:33 +0900)]
wl_egl: Apply pause and wait_idle at buffer clear

 AS-IS
  Using wl_event_mutex lock to pause thread.
  Using wl_event_mutex is not good way to pause thread
 because locking wl_event_mutex can effect other wayland threads.

 TO-BE
  Using tpl_gthread_pause_in_idle is better way than before.
  Because locking on idle allows thread to handle other tasks.

Change-Id: I47a1b82a91ede648ceb8a8a1e7967fa56950ba00
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
17 months agoutils_gthread: Add new functions to pause/continue thread 17/284517/1
Joonbum Ko [Wed, 16 Nov 2022 08:21:08 +0000 (17:21 +0900)]
utils_gthread: Add new functions to pause/continue thread

 tpl_gthread_wait_idle
  - Create a new idle source and attach it to thread context.
    This function will be blocked until idle callback is called.
    If the thread has some worksto be handled, wait for
   the thread to finish it.

 tpl_gthread_pause_in_idle
  - Pause the thread when idle callback is called.

 tpl_gthread_continue
  - Continue the paused thread.

Change-Id: I5a2aaf3b8b9579306246234d252b643b6cc0bf3e
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
17 months agoPackage version up to 1.9.11 70/284170/1 accepted/tizen/7.0/unified/20221121.024219
Joonbum Ko [Thu, 10 Nov 2022 14:57:16 +0000 (23:57 +0900)]
Package version up to 1.9.11

Change-Id: I03d05215651ab24596e24a9a8d011cd7a4940b2f
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
17 months agowl_egl: Print additional INFO logs at buffer_clear 69/284169/1
Joonbum Ko [Thu, 10 Nov 2022 14:45:49 +0000 (23:45 +0900)]
wl_egl: Print additional INFO logs at buffer_clear

Change-Id: I5cbd4b6b96bc149407969834d4147aeebb3cf2e2
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
17 months agowl_egl: Set timeout for buffer_clear to 500ms 68/284168/1
Joonbum Ko [Thu, 10 Nov 2022 10:36:33 +0000 (19:36 +0900)]
wl_egl: Set timeout for buffer_clear to 500ms

 - Some system condition problems may cause signal after 200ms.

Change-Id: I40bdbf7cc862e0026228b85644eda60f15b86dec
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
17 months agoPackage version up to 1.9.10 67/284167/1
Joonbum Ko [Thu, 27 Oct 2022 23:35:20 +0000 (08:35 +0900)]
Package version up to 1.9.10

Change-Id: I43791c514fa7abd274b238d7cdfbc3489e8278eb
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
17 months agowl_egl: Add defense code for fake signal in buffer_clear 66/284166/1
Joonbum Ko [Thu, 27 Oct 2022 15:02:58 +0000 (00:02 +0900)]
wl_egl: Add defense code for fake signal in buffer_clear

 tpl_gcond_timed_wait is changed to be called within the while loop.
 It will repeat the process of checking status even if it wakes up
 due to Fake Signal.

Change-Id: Ia66810da64ba2830c166f01dcb2f2f4615fc8e4f
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
17 months agowl_vk: Add missed flag setting when surface_init 65/284165/1
Joonbum Ko [Thu, 27 Oct 2022 11:04:52 +0000 (20:04 +0900)]
wl_vk: Add missed flag setting when surface_init

Change-Id: I45e7d3135a6780a1f08b10fe8913fc9ffe71af7f
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
17 months agoRemove unused int64, int32 hash key for fixing Svace warning 64/284164/1
jinbong, Lee [Wed, 19 Oct 2022 09:58:06 +0000 (18:58 +0900)]
Remove unused int64, int32 hash key for fixing Svace warning

Change-Id: I9bb85b566db975860e4243c39683f40e60601aed

19 months agoPackage version up to 1.9.9 15/282515/1 accepted/tizen_7.0_unified_hotfix tizen_7.0_hotfix accepted/tizen/7.0/unified/20221110.062136 accepted/tizen/7.0/unified/hotfix/20221116.110149 accepted/tizen/unified/20221006.151841 tizen_7.0_m2_release
Joonbum Ko [Wed, 5 Oct 2022 01:58:46 +0000 (10:58 +0900)]
Package version up to 1.9.9

Change-Id: I6c7059dae6306e235be00ac9ec8bd1f7d3112136
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
19 months agoAdd null checking before calling tpl_gsource_destroy. 14/282514/1
Joonbum Ko [Wed, 5 Oct 2022 01:57:23 +0000 (10:57 +0900)]
Add null checking before calling tpl_gsource_destroy.

Change-Id: I431f21b80215abeafc5ab6daa45778f617cc661a
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
19 months agoRemove unncessary header 13/282513/1
Joonbum Ko [Wed, 5 Oct 2022 01:49:43 +0000 (10:49 +0900)]
Remove unncessary header

Change-Id: I810ec7c149bbb782d8e04167f66810171226d728
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
19 months agoPackage version up to 1.9.8 61/282361/1
Joonbum Ko [Fri, 30 Sep 2022 07:35:33 +0000 (16:35 +0900)]
Package version up to 1.9.8

Change-Id: I7a1bda7114b8cf98de0cd8f2f02dfb6b8d2c25fa
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
19 months agoModified to call tpl_gsource_destroy only once. 60/282360/1
Joonbum Ko [Fri, 30 Sep 2022 07:33:54 +0000 (16:33 +0900)]
Modified to call tpl_gsource_destroy only once.

 - tpl_gsource_destroy means 'sending destroy message to thread'.
  So it need not to be called in loop.

Change-Id: Ifd5706d738a2385396acaa3723138b2f564de4c2
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
19 months agoChanged the order of lock/unlock at buffer_clear. 59/282359/1
Joonbum Ko [Fri, 30 Sep 2022 07:23:50 +0000 (16:23 +0900)]
Changed the order of lock/unlock at buffer_clear.

 - The lock/unlock order of buffer->mutex and display->wl_event_mutex
  is important. display->mutex must surround buffer->mutex

 - Before applying this patch, deadlock issue may be
  occured in buffer_clear.

Change-Id: I90d9b36874def4e4c7f0bd36742b3bbd00faab44
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
19 months agoDelete wrong g_main_context_unref 04/282304/1
Joonbum Ko [Thu, 29 Sep 2022 12:04:56 +0000 (21:04 +0900)]
Delete wrong g_main_context_unref

 - GMainContext is also destroyed when GMainLoop is destroyed.
  Therefore, it is the wrong code to do context_unref before loop_unref.

Change-Id: Ib57eab7ba4345565977102abb0df3268d7f42acb
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
19 months agoChanged the function name properly. 03/282303/1
Joonbum Ko [Thu, 29 Sep 2022 11:45:42 +0000 (20:45 +0900)]
Changed the function name properly.

 tpl_cond_timed_wait -> tpl_gcond_timed_wait

Change-Id: Iebe13b6aa7598d652cf3b5968dbc7b2bb96a44e0
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
19 months agoModified the codes related to call tpl_gcond_wait. 02/282302/1
Joonbum Ko [Tue, 27 Sep 2022 11:41:14 +0000 (20:41 +0900)]
Modified the codes related to call tpl_gcond_wait.

 - g_cond_wait is sometimes awakened by unknown or stolen signal.
  In such cases, unexpected problems may arise. To prevent these problems,
  each tpl_gsource has tpl_gmutex and tpl_gcond, and modified to try
  tpl_gcond_wait() until gsource_finalized flag becomes true.

 - It may be modified with better way.

Change-Id: I1360c0a3888186ba0309fe4d94c5be8e29c6f1b8
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
19 months agoDelete g_cond_wait from tpl_gsource_destroy. 01/282301/1
Joonbum Ko [Wed, 28 Sep 2022 11:26:57 +0000 (20:26 +0900)]
Delete g_cond_wait from tpl_gsource_destroy.

 - g_cond_wait does not guarantee perfectly.
  Therefore, it is recommended that the caller of tpl_gsource_destroy
  should call the g_cond_wait to confirm if the destroy is
  actually complete.

 - https://docs.gtk.org/glib/method.Cond.wait.html
  Atomically releases mutex and waits until cond is signalled.
 When this function returns, mutex is locked again
 and owned by the calling thread.

  When using condition variables, it is possible that a spurious
 wakeup may occur (ie: g_cond_wait() returns even though g_cond_signal()
 was not called). It’s also possible that a stolen wakeup may occur.
 This is when g_cond_signal() is called, but another thread acquires
 mutex before this thread and modifies the state of the program in such
 a way that when g_cond_wait() is able to return,
 the expected condition is no longer met.

 For this reason, g_cond_wait() must always be used in a loop.
 See the documentation for GCond for a complete example.

Change-Id: If3b98b4d79b205d9125558edb75f4b85ef6a3a99
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
20 months agoPackage version up to 1.9.7 87/276087/3 accepted/tizen/unified/20220824.135624 submit/tizen/20220818.082356 submit/tizen/20220819.072630
Joonbum Ko [Thu, 9 Jun 2022 10:13:37 +0000 (19:13 +0900)]
Package version up to 1.9.7

Change-Id: I9a15a0ff3f4accd438af5fe8abd89d71fc1275fa
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
20 months agoFixed to prevent page fault via invalid address. 86/276086/3
Joonbum Ko [Thu, 9 Jun 2022 10:04:11 +0000 (19:04 +0900)]
Fixed to prevent page fault via invalid address.

 - If the last_enq_buffer of wl_egl_surface has a wrong pointer address,
  page fault may occur inside the tbm_surface_internal_is_valid of libtbm.
 - To prevent this problem, it is modified to check in advance from
  the list of buffers of wl_egl_surface.

Change-Id: I459b182e9ed435ce93a3a862251869fb9c7829ad
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
20 months agoAdded internal function to check buffer is validate 85/276085/3
Joonbum Ko [Thu, 9 Jun 2022 09:43:49 +0000 (18:43 +0900)]
Added internal function to check buffer is validate

 - It can be modified flexibly.
 - For now, this function can check if given tbm_surface_h
  is managed by wl_egl_surface.

Change-Id: Ied59f583666a5f18f15537be6507c83c5277a866
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
21 months agoFix pointer to int cast warning 48/278248/1 accepted/tizen/unified/20220722.031005 submit/tizen/20220718.063229 submit/tizen/20220721.050405
Jinbong [Mon, 18 Jul 2022 05:53:58 +0000 (14:53 +0900)]
Fix pointer to int cast warning

Change-Id: Id0af40582f900c46745f6c1b8e6864789daeca81

21 months agoRevert "Remove compile warning about casting to pointer from integer of different...
Jinbong [Mon, 18 Jul 2022 05:46:27 +0000 (14:46 +0900)]
Revert "Remove compile warning about casting to pointer from integer of different size"

This reverts commit b1725298fc58f3e2e63da142bf9687a214f38146.

21 months agoRemove compile warning about casting to pointer from integer of different size submit/tizen/20220718.053106
Jinbong [Mon, 18 Jul 2022 05:14:28 +0000 (14:14 +0900)]
Remove compile warning about casting to pointer from integer of different size

22 months agoPackage version up to 1.9.6 09/276009/1 accepted/tizen/unified/20220610.134831 submit/tizen/20220607.045230 submit/tizen/20220609.070600 submit/tizen/20220609.091423 submit/tizen/20220613.104856 submit/tizen/20220715.101112 submit/tizen/20220715.101409 submit/tizen/20220715.102057 submit/tizen/20220715.104026
Joonbum Ko [Wed, 8 Jun 2022 10:23:57 +0000 (19:23 +0900)]
Package version up to 1.9.6

Change-Id: I8810e6da7e5c98841c37dee3b6660137b5445b5f
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
22 months agoFix pc.in to follow 64bit build guideline 08/276008/1
Joonbum Ko [Wed, 8 Jun 2022 10:23:26 +0000 (19:23 +0900)]
Fix pc.in to follow 64bit build guideline

Change-Id: I32adf0732fab34864cdb7e1cafffdad1b787ac2c
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoPackage version up to 1.9.5 69/273969/1 submit/tizen/20220420.061219 submit/tizen/20220607.074731
Joonbum Ko [Tue, 19 Apr 2022 06:04:21 +0000 (15:04 +0900)]
Package version up to 1.9.5

Change-Id: I44d35f42e7a88c8a882e31640ec8783d0496a7ba
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoFix issue when reset 39/273639/2
Xuelian Bai [Mon, 11 Apr 2022 07:02:57 +0000 (15:02 +0800)]
Fix issue when reset

Set ref_cnt as 1 before CREATE_QUEUE, or when queue is reused and
ref_cnt is increased, the ref_cnt will be set back to 1.
Set format as default when reset

Change-Id: I0bd90a361d26329cb86393b1eaddf1013af09244
Signed-off-by: Xuelian Bai <xuelian.bai@samsung.com>
2 years agoPackage version up to 1.9.4 56/273356/2
Joonbum Ko [Tue, 5 Apr 2022 01:49:15 +0000 (10:49 +0900)]
Package version up to 1.9.4

Change-Id: Ic759425a78f195bd327f44dc3de9f6255a553f7b
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agofix 64bits build-errors 55/273355/2
Joonbum Ko [Tue, 5 Apr 2022 01:46:58 +0000 (10:46 +0900)]
fix 64bits build-errors

Change-Id: Ie5a6541b8442806c948c099f69eaa4729292b818
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoAdd missed initializing to trace tpl_surface. 54/273354/1
Joonbum Ko [Tue, 5 Apr 2022 01:42:16 +0000 (10:42 +0900)]
Add missed initializing to trace tpl_surface.

Change-Id: Id023b7633986e6ec59d482f8f77c45fcc7d512e7
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoPackage version up to 1.9.3 17/271517/1 accepted/tizen/unified/20220224.125740 submit/tizen/20220223.080743
Joonbum Ko [Tue, 22 Feb 2022 08:20:36 +0000 (17:20 +0900)]
Package version up to 1.9.3

Change-Id: I2c1747fc961d1f39166b32f2aa5431db3648f2fc

2 years agoFix space trim issue at configure.ac 16/271516/1
Joonbum Ko [Tue, 22 Feb 2022 08:20:13 +0000 (17:20 +0900)]
Fix space trim issue at configure.ac

Change-Id: I5c8eaf9bb892af4336658ed3172ed86df353556b
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoPackage version up to 1.9.2 69/271069/1 accepted/tizen/unified/20220217.153425 submit/tizen/20220215.070726
Joonbum Ko [Tue, 15 Feb 2022 05:33:26 +0000 (14:33 +0900)]
Package version up to 1.9.2

Change-Id: I3c744d64eaa7bfeb2f4dc00fe813e5de09331901
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoMake clear about use_explicit_sync feature flag. 66/271066/3
Joonbum Ko [Tue, 15 Feb 2022 05:06:30 +0000 (14:06 +0900)]
Make clear about use_explicit_sync feature flag.

 - if the boolean flag use_explicit_sync is true,
  it includes the meaning surface_sync is not null.
 - so, it need to be simplified with using only
  use_explicit_sync flag.

Change-Id: Icdcc55a76d72b28d9bd38a96de1093ab56edc135
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoPackage version up to 1.9.1 76/270176/1 submit/tizen/20220126.091620 submit/tizen/20220215.005041
Joonbum Ko [Wed, 26 Jan 2022 07:04:51 +0000 (16:04 +0900)]
Package version up to 1.9.1

 - the minor version for tizen_7.0 is '9'

Change-Id: I21627d64a70f3d9a137ae73106be90d36328ce03
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoInitialize last_enq_buffer to null when it committed. 75/270175/1
Joonbum Ko [Wed, 26 Jan 2022 06:26:31 +0000 (15:26 +0900)]
Initialize last_enq_buffer to null when it committed.

 - If the last_enq_buffer of wl_egl_surface has been committed,
  it is not necessary to have this handle pointer.

Change-Id: I3153b3cc9cb133f1d51321dc7aaa92f57b1e5ed8
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoPrevents the incorrect signal on gcond of wl_egl_buffer. 74/270174/1
Joonbum Ko [Thu, 20 Jan 2022 08:16:52 +0000 (17:16 +0900)]
Prevents the incorrect signal on gcond of wl_egl_buffer.

  As with g_cond_wait() it is possible that a spurious or stolen wakeup
 could occur. For that reason, waiting on a condition variable should
 always be in a loop, based on an explicitly-checked predicate.

Change-Id: I388e71a48dc91c1636490c856698c4a7f8d3fafd
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoPackage version up to 1.8.23 62/269562/1 submit/tizen/20220118.102333
Joonbum Ko [Tue, 18 Jan 2022 02:06:30 +0000 (11:06 +0900)]
Package version up to 1.8.23

Change-Id: I39e166a5eba110731a2a3b5e8fa6a14f7b90bdad
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoChange the handle of last_enq_buffer to tbm_surface_h 61/269561/1
Joonbum Ko [Tue, 18 Jan 2022 06:17:49 +0000 (15:17 +0900)]
Change the handle of last_enq_buffer to tbm_surface_h

 - to check validation for the handle of last_enq_buffer.

Change-Id: Ib92b28cd3bc6bfa553fb5de57afd9fc8cfcf0cdc
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoPackage version up to 1.8.22 97/269197/2
Joonbum Ko [Tue, 11 Jan 2022 07:49:33 +0000 (16:49 +0900)]
Package version up to 1.8.22

Change-Id: I0a1ab000f80ab7a3c2aaaab0acfaca6591e95d53
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoFixed to use last_enq_buffer instead of last_deq_buffer. 21/269421/1
Joonbum Ko [Fri, 14 Jan 2022 01:51:51 +0000 (10:51 +0900)]
Fixed to use last_enq_buffer instead of last_deq_buffer.

 - last_deq_buffer has a risk to be free from thread.

Change-Id: I677704a5b9bbf8a7c405689663a856d83df595f4
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoMove unref to outside from buffer mutex. 20/269420/1
Joonbum Ko [Thu, 13 Jan 2022 08:52:48 +0000 (17:52 +0900)]
Move unref to outside from buffer mutex.

Change-Id: If2c0eb9ee17edf6febc830ec058b274b1eba5431
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoCall dispatch cb for disposable source when IO error occured. 96/269196/2
Joonbum Ko [Tue, 11 Jan 2022 06:41:03 +0000 (15:41 +0900)]
Call dispatch cb for disposable source when IO error occured.

Change-Id: I8a84a32b5c246c65a9b7a3ab5e5bc0e69afe51ae
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoPackage version up to 1.8.21 61/268961/1
Joonbum Ko [Wed, 5 Jan 2022 07:53:24 +0000 (16:53 +0900)]
Package version up to 1.8.21

Change-Id: I21d36be947889a69c48b7b51c448d95abef6b0c9
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoRemove finalizer source to before cond_signal 60/268960/1
Joonbum Ko [Wed, 5 Jan 2022 07:48:11 +0000 (16:48 +0900)]
Remove finalizer source to before cond_signal

Change-Id: Iaeb1b75ecff8860f10f82a21e8ea2be972e70dad
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoPackage version up to 1.8.20 19/268719/1
Joonbum Ko [Thu, 30 Dec 2021 07:31:34 +0000 (16:31 +0900)]
Package version up to 1.8.20

Change-Id: I27eb1758e92fcafa69fd5203fc85fd7cca1d6fac
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoClear all cached buffer when queue_force_flush 18/268718/1
Joonbum Ko [Thu, 30 Dec 2021 06:37:10 +0000 (15:37 +0900)]
Clear all cached buffer when queue_force_flush

Change-Id: Ic232153cfbdea49aea1a9fd862ac81f673f7814c
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoAdd mutex protection when gsource_destroy 17/268717/1
Joonbum Ko [Thu, 30 Dec 2021 04:56:12 +0000 (13:56 +0900)]
Add mutex protection when gsource_destroy

Change-Id: I50e841fa3895e6f145249396574e6a8267f1e663
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoAdd log to check when the transform changed 16/268716/1
Joonbum Ko [Thu, 30 Dec 2021 06:19:24 +0000 (15:19 +0900)]
Add log to check when the transform changed

Change-Id: I069fc944356d25845655359cdb8654887b554e8f
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoPackage version up to 1.8.19 08/268508/1 submit/tizen/20211227.044152
Joonbum Ko [Fri, 24 Dec 2021 01:45:28 +0000 (10:45 +0900)]
Package version up to 1.8.19

Change-Id: I5b0450b14c24e3f8152b46f9482f52a8fce19d71
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoInitialize last_deq_buffer to NULL when it free. 07/268507/1
Joonbum Ko [Fri, 24 Dec 2021 01:40:41 +0000 (10:40 +0900)]
Initialize last_deq_buffer to NULL when it free.

 Problem : DEQ -> ENQ -> ACQ -> VBLANK -> COMMIT -> RELEASE
  -> QUEUE_RESET -> last_deq_buffer free
  -> try DEQ !!< will be blocked.

 Init wl_egl_surface->last_deq_buffer to NULL when it was free
  to prevent to access the wrong pointer of last_deq_buffer.

Change-Id: Ic619b6a27a098b3de06c5733cec171538f921165
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoPackage version up to 1.8.18 36/268436/1
Joonbum Ko [Thu, 23 Dec 2021 01:38:38 +0000 (10:38 +0900)]
Package version up to 1.8.18

Change-Id: I61c16ae2ae8798af01bfcf383602f607dce88049
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoAdded mutex for protecting vblank resources. 35/268435/1
Joonbum Ko [Thu, 23 Dec 2021 01:41:04 +0000 (10:41 +0900)]
Added mutex for protecting vblank resources.

 As-Is :
  - vblank resource was protected via surf_mutex.
 To-Be :
  - It will be protected via its own mutex.

Change-Id: Iff4084a4f8271b8cbe4a7ece308b98915d9641af
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoChanged to do roundtrip_queue before display_fini. 34/268434/1
Joonbum Ko [Wed, 22 Dec 2021 08:25:36 +0000 (17:25 +0900)]
Changed to do roundtrip_queue before display_fini.

Change-Id: I998141a3dc63ac944526dbb14876d8d6fa690c02
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoRemove wl_egl_buffer from vblank list when it freed. 33/268433/1
Joonbum Ko [Wed, 22 Dec 2021 08:16:12 +0000 (17:16 +0900)]
Remove wl_egl_buffer from vblank list when it freed.

 - If the wl_egl_buffer is forcibly free from the buffer_clear(),
  the invalid wl_egl_buffer remains in vblank->waiting_buffers.
 - This invalid pointer should be removed from the list
  when wl_egl_buffer free.

Change-Id: If6b9f58f4160c4426f2b816a22afb9e23b61372a
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoModified the new buffer allocation in the RESET situation 32/268432/1
Joonbum Ko [Wed, 22 Dec 2021 05:45:09 +0000 (14:45 +0900)]
Modified the new buffer allocation in the RESET situation

As-Is :
 - If the tbm_surface_queue_reset occurs more frequently
  than VBLANK (16ms), there is a problem that the new tbm_surface
  continues to be allocated.

To-Be :
 - If there is a dequeue buffer before the RESET occurs,
  the new buffer will be allocated after waiting for
  dequeued buffer to be commit.

Change-Id: Id256e15e1125e06b362d5b90e7ead7718b6343ad
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoPackage version up to 1.8.17 74/267974/1 accepted/tizen/unified/20211217.122040 submit/tizen/20211214.052148
Joonbum Ko [Tue, 14 Dec 2021 04:46:53 +0000 (13:46 +0900)]
Package version up to 1.8.17

Change-Id: I94cb61d3c1600621d650b4b47ca41758ff8e3d4c
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoSend transform of window and buffer since wl_surface version 2 73/267973/1
Changyeon Lee [Fri, 10 Dec 2021 06:48:48 +0000 (15:48 +0900)]
Send transform of window and buffer since wl_surface version 2

wl_surface_set_buffer_transform request is supported since
wl_surface version 2

Change-Id: Iaa9a996853b3e59fb2d325b615e1587d18e6c119

2 years agoSend transform of window and buffer to server after they are created. 72/267972/1
Changyeon Lee [Thu, 9 Dec 2021 10:54:34 +0000 (19:54 +0900)]
Send transform of window and buffer to server after they are created.

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

2 years agoInitialize wl_egl_buffer->waiting_source in mutex protection. 71/267971/1
Joonbum Ko [Tue, 14 Dec 2021 04:35:06 +0000 (13:35 +0900)]
Initialize wl_egl_buffer->waiting_source in mutex protection.

 - the buffer_clear() of the main thread could occur thread conflict.
 - the pointer wl_egl_buffer->waiting_source must be protected.

Change-Id: I4af88b06ff104a39c1fc0aa890d1cab74f589eb7
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoPackage version up to 1.8.16 73/266673/1 accepted/tizen/unified/20211126.111807 submit/tizen/20211124.073616
Joonbum Ko [Wed, 17 Nov 2021 04:32:44 +0000 (13:32 +0900)]
Package version up to 1.8.16

Change-Id: I1275061fee1f08b925c5eaf1abf5ab0c12a21443
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoFlush vblank waiting buffers when tdm error occured. 72/266672/1
Joonbum Ko [Wed, 17 Nov 2021 04:31:12 +0000 (13:31 +0900)]
Flush vblank waiting buffers when tdm error occured.

 - If tdm error such as TIEMOUT occured,
  flush all vblank waiting buffers of its wl_egl_surface.
   Otherwise, only one wl_egl_buffer will be commited
  per one vblank event.

Change-Id: I8df5cb847cf77875315df6ae3ca4086992f1700e
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
2 years agoPackage version up to 1.8.15 36/265536/1 accepted/tizen/unified/20211029.132555 submit/tizen/20211028.011250
Joonbum Ko [Thu, 21 Oct 2021 12:16:35 +0000 (21:16 +0900)]
Package version up to 1.8.15

Change-Id: Ie037ea92b73da3efb0e4ff953d6a65823036f7ad
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>