raster pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=c7999bb78902c5c45003cdcec5577e4f31b1bdf0

commit c7999bb78902c5c45003cdcec5577e4f31b1bdf0
Author: Carsten Haitzler <[email protected]>
Date:   Mon Oct 4 13:18:42 2021 +0100

    protect against possible junk fullscreen windows in list
---
 src/bin/e_client.c      | 12 +++++++-----
 src/bin/e_comp_object.c |  1 +
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index ffc182511..6e605a339 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -459,6 +459,8 @@ _e_client_revert_focus(E_Client *ec)
 static void
 _e_client_free(E_Client *ec)
 {
+   if (ec->desk)
+     ec->desk->fullscreen_clients = 
eina_list_remove(ec->desk->fullscreen_clients, ec);
    if (ec->restore_zone_id)
      {
         eina_stringshare_del(ec->restore_zone_id);
@@ -478,9 +480,7 @@ _e_client_free(E_Client *ec)
    E_OBJECT(ec)->references++;
    if (ec->fullscreen)
      {
-        ec->desk->fullscreen_clients = 
eina_list_remove(ec->desk->fullscreen_clients, ec);
-        if (!ec->desk->fullscreen_clients)
-          e_comp_render_queue();
+        if (!ec->desk->fullscreen_clients) e_comp_render_queue();
      }
    if (ec->new_client)
      e_comp->new_clients--;
@@ -2875,7 +2875,8 @@ e_client_desk_set(E_Client *ec, E_Desk *desk)
      {
         if (ec->desk)
           ec->desk->fullscreen_clients = 
eina_list_remove(ec->desk->fullscreen_clients, ec);
-        desk->fullscreen_clients = eina_list_append(desk->fullscreen_clients, 
ec);
+        if (!eina_list_data_find(desk->fullscreen_clients, ec))
+          desk->fullscreen_clients = 
eina_list_append(desk->fullscreen_clients, ec);
      }
    old_desk = ec->desk;
    ec->desk = desk;
@@ -4465,7 +4466,8 @@ e_client_fullscreen(E_Client *ec, E_Fullscreen policy)
         e_object_ref(E_OBJECT(ec));
         e_comp->nocomp_ec = ec;
      }
-   ec->desk->fullscreen_clients = 
eina_list_append(ec->desk->fullscreen_clients, ec);
+   if (!eina_list_data_find(ec->desk->fullscreen_clients, ec))
+     ec->desk->fullscreen_clients = 
eina_list_append(ec->desk->fullscreen_clients, ec);
    ec->pre_res_change.valid = 0;
 
    if (ec->maximized)
diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 5c62c652a..04b0bd330 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -1800,6 +1800,7 @@ _e_comp_intercept_focus(void *data, Evas_Object *obj, 
Eina_Bool focus)
    if (focus)
      {
         ec = e_client_stack_active_adjust(ec);
+        if (!ec) return;
         obj = ec->frame;
         cw = evas_object_data_get(obj, "comp_obj");
      }

-- 


Reply via email to