event_loop: set the user func and data before calling wayland API. 20/120520/1
authorBoram Park <boram1288.park@samsung.com>
Thu, 23 Mar 2017 06:51:33 +0000 (15:51 +0900)
committerBoram Park <boram1288.park@samsung.com>
Thu, 23 Mar 2017 06:51:58 +0000 (15:51 +0900)
The user func can be called at the line of wl api by the backend implementation

Change-Id: Idfc19afa17f584531ef37834c592f59f803d2823

src/tdm_event_loop.c

index 29a9763..a2cac7e 100644 (file)
@@ -324,6 +324,10 @@ tdm_event_loop_add_fd_handler(tdm_display *dpy, int fd, tdm_event_loop_mask mask
        if (mask & TDM_EVENT_LOOP_WRITABLE)
                wl_mask |= WL_EVENT_WRITABLE;
 
+       fd_source->private_display = private_display;
+       fd_source->func = func;
+       fd_source->user_data = user_data;
+
        fd_source->base.wl_source =
                wl_event_loop_add_fd(private_loop->wl_loop,
                                                         fd, wl_mask, _tdm_event_loop_fd_func, fd_source);
@@ -334,10 +338,6 @@ tdm_event_loop_add_fd_handler(tdm_display *dpy, int fd, tdm_event_loop_mask mask
                return NULL;
        }
 
-       fd_source->private_display = private_display;
-       fd_source->func = func;
-       fd_source->user_data = user_data;
-
        if (error)
                *error = TDM_ERROR_NONE;
 
@@ -411,6 +411,10 @@ tdm_event_loop_add_timer_handler(tdm_display *dpy, tdm_event_loop_timer_handler
        timer_source = calloc(1, sizeof(tdm_event_loop_source_timer));
        TDM_RETURN_VAL_IF_FAIL_WITH_ERROR(timer_source, TDM_ERROR_OUT_OF_MEMORY, NULL);
 
+       timer_source->private_display = private_display;
+       timer_source->func = func;
+       timer_source->user_data = user_data;
+
        timer_source->base.wl_source =
                wl_event_loop_add_timer(private_loop->wl_loop,
                                                                _tdm_event_loop_timer_func, timer_source);
@@ -421,10 +425,6 @@ tdm_event_loop_add_timer_handler(tdm_display *dpy, tdm_event_loop_timer_handler
                return NULL;
        }
 
-       timer_source->private_display = private_display;
-       timer_source->func = func;
-       timer_source->user_data = user_data;
-
        if (error)
                *error = TDM_ERROR_NONE;