Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_zone.c 


Log Message:


fix segv with orphaned windows when their desk goes bye bye.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_zone.c,v
retrieving revision 1.109
retrieving revision 1.110
diff -u -3 -r1.109 -r1.110
--- e_zone.c    21 Feb 2007 00:24:53 -0000      1.109
+++ e_zone.c    2 Mar 2007 14:45:09 -0000       1.110
@@ -337,7 +337,7 @@
 {
    E_Desk   **new_desks;
    E_Desk    *desk, *new_desk;
-   int        x, y, xx, yy, moved;
+   int        x, y, xx, yy, moved, nx, ny;
    E_Border  *bd;
    E_Event_Zone_Desk_Count_Set *ev;
    E_Border_List *bl;
@@ -350,6 +350,28 @@
    yy = y_count;
    if (yy < 1) yy = 1;
 
+   moved = 0;
+   if (zone->desk_x_current >= xx) moved = 1;
+   if (zone->desk_y_current >= yy) moved = 1;
+   if (moved)
+     {
+       nx = zone->desk_x_current;
+       ny = zone->desk_y_current;
+       if (zone->desk_x_current >= xx) nx = xx - 1;
+       if (zone->desk_y_current >= yy) ny = yy - 1;
+       printf("show desk %i,%i\n", nx, ny);
+       e_desk_show(e_desk_at_xy_get(zone, nx, ny));
+     }
+   else
+     {
+       desk = e_desk_current_get(zone);
+       if (desk)
+         {
+            desk->visible = 0;
+            e_desk_show(desk);
+         }
+     }
+   
    new_desks = malloc(xx * yy * sizeof(E_Desk *));
    for (x = 0; x < xx; x++)
      {
@@ -410,19 +432,6 @@
    zone->desk_x_count = xx;
    zone->desk_y_count = yy;
 
-   moved = 0;
-   if (zone->desk_x_current >= xx)
-     moved = 1;
-   if (zone->desk_y_current >= yy)
-     moved = 1;
-   if (moved)
-     e_desk_show(e_desk_at_xy_get(zone, xx - 1, yy - 1));
-   else
-     {
-       desk = e_desk_current_get(zone);
-       desk->visible = 0;
-       e_desk_show(desk);
-     }
    e_config->zone_desks_x_count = xx;
    e_config->zone_desks_y_count = yy;
    e_config_save_queue();



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to