diff options
author | Sung-jae Park <nicesj.park@samsung.com> | 2015-06-11 16:36:59 +0900 |
---|---|---|
committer | Sung-jae Park <nicesj.park@samsung.com> | 2015-06-11 16:36:59 +0900 |
commit | dd7595b7c0ba199d1a1c02551a1d968c6fb44a76 (patch) | |
tree | a188a7e1c0652ce84c166271c6e49b5589b30e9c /src | |
parent | de592ed29662df9ae4595f0497f4b6855683006e (diff) | |
download | widget-service-dd7595b7c0ba199d1a1c02551a1d968c6fb44a76.tar.gz widget-service-dd7595b7c0ba199d1a1c02551a1d968c6fb44a76.tar.bz2 widget-service-dd7595b7c0ba199d1a1c02551a1d968c6fb44a76.zip |
If it fails to find drm_fd, return NOT_SUPPORTEDsubmit/tizen_mobile/20150611.073810accepted/tizen/mobile/20150611.091411
Change-Id: I63a30fe28bacffb93a54685897da2b33d7f2d909
Diffstat (limited to 'src')
-rw-r--r-- | src/util_wayland.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/util_wayland.c b/src/util_wayland.c index ea56423..4ecd4fd 100644 --- a/src/util_wayland.c +++ b/src/util_wayland.c @@ -315,6 +315,7 @@ struct wl_drm_info { struct wl_drm *wl_drm; int authenticated; int fd; + int inf_checked; }; static void wl_client_drm_handle_device(void *data, struct wl_drm *drm, const char *device) @@ -369,6 +370,8 @@ static void wl_client_registry_handle_global(void *data, struct wl_registry *reg wl_proxy_set_queue((struct wl_proxy *)info->wl_drm, info->wl_queue); wl_drm_add_listener(info->wl_drm, &wl_drm_client_listener, data); } + + info->inf_checked++; } EAPI int widget_util_get_drm_fd(void *dpy, int *fd) @@ -423,8 +426,9 @@ EAPI int widget_util_get_drm_fd(void *dpy, int *fd) wl_registry_add_listener(wl_registry, ®istry_listener, &info); info.wl_queue = wl_queue; + info.inf_checked = 0; DbgPrint("Consuming Dispatch Queue begin\n"); - while (ret != -1 && !info.authenticated) { + while (ret != -1 && !info.inf_checked) { ret = wl_display_dispatch_queue(dpy, wl_queue); DbgPrint("Dispatch Queue consumed: %d\n", ret); } @@ -433,11 +437,15 @@ EAPI int widget_util_get_drm_fd(void *dpy, int *fd) wl_event_queue_destroy(wl_queue); wl_registry_destroy(wl_registry); wl_drm_destroy(info.wl_drm); - - *fd = info.fd; if (disp == dpy) { wl_display_disconnect(disp); } + + if (!info.inf_checked || !info.authenticated) { + return WIDGET_ERROR_NOT_SUPPORTED; + } + + *fd = info.fd; return *fd >= 0 ? WIDGET_ERROR_NONE : WIDGET_ERROR_FAULT; } |