e_client: eval aux hints for clients which is ignored but commit made 45/208245/5
authorJuyeon Lee <juyeonne.lee@samsung.com>
Thu, 20 Jun 2019 08:42:47 +0000 (17:42 +0900)
committerJuyeon Lee <juyeonne.lee@samsung.com>
Tue, 2 Jul 2019 09:16:28 +0000 (18:16 +0900)
remote surface providers usally updates in offscree but
its state is assigned as ignored
handle such clients to have event E_CLIENT_HOOK_AUX_HINT_CHANGE

Change-Id: I5c5696de1688b18c8cc68978142f7fb90f28a123

src/bin/e_client.c
src/bin/e_comp_wl.c
src/bin/e_comp_wl.h

index 26430a7..11a266d 100644 (file)
@@ -3891,7 +3891,17 @@ e_client_idler_before(void)
    // pass 3 - hide windows needing hide and eval (main eval)
    E_CLIENT_FOREACH(ec)
      {
-        if (ec->ignored || e_object_is_del(E_OBJECT(ec))) continue;
+        if (e_object_is_del(E_OBJECT(ec)) continue;
+        if (ec->ignored)
+          {
+             // ignored client but needing eval (aux hint) such as remote surfaces
+             if (ec->changed)
+               {
+                  if (ec->comp_data && ec->comp_data->first_commit)
+                    _e_client_aux_hint_eval(ec);
+               }
+             continue;
+          }
 
         if ((ec->changes.visible) && (!ec->visible))
           {
index e70d3c1..482dac4 100644 (file)
@@ -2783,6 +2783,9 @@ _e_comp_wl_surface_cb_commit(struct wl_client *client EINA_UNUSED, struct wl_res
    if (!(ec = wl_resource_get_user_data(resource))) return;
    if (e_object_is_del(E_OBJECT(ec))) return;
 
+   if (!ec->comp_data->first_commit)
+     ec->comp_data->first_commit = EINA_TRUE;
+
    if (!ec->comp_data->mapped)
      {
         if (ec->comp_data->shell.surface && ec->comp_data->pending.new_attach &&
index 786ceb5..55deed2 100644 (file)
@@ -460,6 +460,7 @@ struct _E_Comp_Wl_Client_Data
    Eina_Bool video_client : 1; // Deprecated
    Eina_Bool has_video_client : 1;
    Eina_Bool never_hwc : 1;          //  force window not to do hwc
+   Eina_Bool first_commit : 1;       // TRUE : once client committed
    unsigned char accepts_focus : 1;
    unsigned char conformant : 1;
    E_Window_Type win_type;