+ surface = ecore_wl_window_surface_get(wlwin);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(surface,
+ EFL_UTIL_ERROR_INVALID_PARAMETER);
+
+ brightness_info = eina_hash_find(_eflutil.wl.display_policy.hash_brightness, &surface);
+ if (!brightness_info)
+ {
+ brightness_info = calloc(1, sizeof(Efl_Util_Wl_Surface_Brightness_Info));
+ EINA_SAFETY_ON_NULL_RETURN_VAL(brightness_info, EFL_UTIL_ERROR_OUT_OF_MEMORY);
+
+ brightness_info->surface = surface;
+ brightness_info->brightness = brightness;
+ brightness_info->wait_for_done = EINA_TRUE;
+ brightness_info->state = TIZEN_DISPLAY_POLICY_ERROR_STATE_NONE;
+
+ eina_hash_add(_eflutil.wl.display_policy.hash_brightness,
+ &surface,
+ brightness_info);
+ }
+ else
+ {
+ brightness_info->brightness = brightness;
+ brightness_info->wait_for_done = EINA_TRUE;
+ brightness_info->state = TIZEN_DISPLAY_POLICY_ERROR_STATE_NONE;
+ }
+
+ tizen_display_policy_set_window_brightness(_eflutil.wl.display_policy.proto,
+ surface, brightness);
+ if (brightness_info->wait_for_done)
+ {
+ int count = 0;
+ while (brightness_info->wait_for_done && (count < 3))
+ {
+ ecore_wl_flush();
+ wl_display_dispatch_queue(_eflutil.wl.dpy, _eflutil.wl.queue);
+ count++;
+ }
+
+ if (brightness_info->wait_for_done)
+ {
+ return EFL_UTIL_ERROR_INVALID_PARAMETER;
+ }
+ else
+ {
+ if (brightness_info->state == TIZEN_DISPLAY_POLICY_ERROR_STATE_PERMISSION_DENIED)
+ {
+ return EFL_UTIL_ERROR_PERMISSION_DENIED;
+ }
+ }
+ }
+ return EFL_UTIL_ERROR_NONE;
+ }
+ else
+ return EFL_UTIL_ERROR_INVALID_PARAMETER;
+}
+
+API int
+efl_util_get_window_brightness(Evas_Object *window, int *brightness)
+{
+ Ecore_Wl_Window *wlwin;
+ struct wl_surface *surface;
+ Efl_Util_Wl_Surface_Brightness_Info *brightness_info;
+ Eina_Bool res;
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(window, EFL_UTIL_ERROR_INVALID_PARAMETER);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(brightness, EFL_UTIL_ERROR_INVALID_PARAMETER);
+
+ res = _wl_init();
+ EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EFL_UTIL_ERROR_INVALID_PARAMETER);
+
+ wlwin = elm_win_wl_window_get(window);
+ if (!wlwin) return EFL_UTIL_ERROR_INVALID_PARAMETER;
+
+ while (!_eflutil.wl.display_policy.proto)
+ wl_display_dispatch_queue(_eflutil.wl.dpy, _eflutil.wl.queue);
+
+ surface = ecore_wl_window_surface_get(wlwin);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(surface,
+ EFL_UTIL_ERROR_INVALID_PARAMETER);
+
+ brightness_info = eina_hash_find(_eflutil.wl.display_policy.hash_brightness, &surface);
+ if (brightness_info)
+ {
+ if (brightness_info->wait_for_done)
+ {
+ while (brightness_info->wait_for_done)
+ {
+ ecore_wl_flush();
+ wl_display_dispatch_queue(_eflutil.wl.dpy, _eflutil.wl.queue);
+ }
+ }
+ *brightness = brightness_info->brightness;
+ }
+ else
+ *brightness = -1;
+
+ return EFL_UTIL_ERROR_NONE;
+}
+
+
+struct _efl_util_inputgen_h
+{
+ unsigned int init_type;
+ char name[32];
+};
+
+static void
+_cb_device_add(void *data EINA_UNUSED,
+ struct tizen_input_device_manager *tizen_input_device_manager EINA_UNUSED,
+ uint32_t serial EINA_UNUSED,
+ const char *identifier EINA_UNUSED,
+ struct tizen_input_device *device EINA_UNUSED,
+ struct wl_seat *seat EINA_UNUSED)
+{
+ ;
+}
+
+/* LCOV_EXCL_START */
+static void
+_cb_device_remove(void *data EINA_UNUSED,
+ struct tizen_input_device_manager *tizen_input_device_manager EINA_UNUSED,
+ uint32_t serial EINA_UNUSED,
+ const char *identifier EINA_UNUSED,
+ struct tizen_input_device *device EINA_UNUSED,
+ struct wl_seat *seat EINA_UNUSED)
+{
+ ;
+}
+/* LCOV_EXCL_STOP */
+
+static void
+_cb_error(void *data EINA_UNUSED,
+ struct tizen_input_device_manager *tizen_input_device_manager EINA_UNUSED,
+ uint32_t errorcode)
+{
+ _eflutil.wl.devmgr.request_notified = errorcode;
+}
+
+/* LCOV_EXCL_START */
+static void
+_cb_block_expired(void *data EINA_UNUSED,
+ struct tizen_input_device_manager *tizen_input_device_manager EINA_UNUSED)
+{
+ ;
+}
+/* LCOV_EXCL_STOP */