diff options
| author | Dana Jansens <danakj@orodu.net> | 2009-12-09 17:03:27 -0500 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2009-12-09 17:03:27 -0500 |
| commit | d3976a51fb4a43edfddf1938e249232301b9c8b5 (patch) | |
| tree | cb8abee5e2246e5bd537c1764c134fe0aafd74be /openbox/screen.c | |
| parent | aa329719b99792a624449b2448abee9e2c67ce94 (diff) | |
Revert "Some fixes for the pager popups, and avoid a crash if you destroy a popup while it is going to be shown later by a delay."
This reverts commit 33328583a143677d27eb3d081ce66532c3aaca1c.
Diffstat (limited to 'openbox/screen.c')
| -rw-r--r-- | openbox/screen.c | 40 |
1 files changed, 15 insertions, 25 deletions
diff --git a/openbox/screen.c b/openbox/screen.c index bc8c72d8..b16bb17b 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -57,7 +57,7 @@ static void screen_tell_ksplash(void); static void screen_fallback_focus(void); guint screen_num_desktops; -guint screen_num_monitors = 0; +guint screen_num_monitors; guint screen_desktop; guint screen_last_desktop; gboolean screen_showing_desktop; @@ -77,7 +77,7 @@ static GSList *struts_left = NULL; static GSList *struts_right = NULL; static GSList *struts_bottom = NULL; -static ObPagerPopup **desktop_popup = NULL; +static ObPagerPopup **desktop_popup; /*! The number of microseconds that you need to be on a desktop before it will replace the remembered "last desktop" */ @@ -355,19 +355,20 @@ void screen_startup(gboolean reconfig) if (reconfig) { guint i; - - /* recreate the pager popups to use any new theme stuff. it was - freed in screen_shutdown() already. */ desktop_popup = g_new(ObPagerPopup*, screen_num_monitors); for (i = 0; i < screen_num_monitors; i++) { desktop_popup[i] = pager_popup_new(); pager_popup_height(desktop_popup[i], POPUP_HEIGHT); + + /* update the pager popup's width */ pager_popup_text_width_to_strings(desktop_popup[i], screen_desktop_names, screen_num_desktops); } return; + } else { + desktop_popup = NULL; } /* get the initial size */ @@ -459,10 +460,10 @@ void screen_shutdown(gboolean reconfig) { guint i; - for (i = 0; i < screen_num_monitors; i++) + for (i = 0; i < screen_num_monitors; i++) { pager_popup_free(desktop_popup[i]); + } g_free(desktop_popup); - desktop_popup = NULL; if (reconfig) return; @@ -509,7 +510,6 @@ void screen_resize(void) screen_update_areas(); dock_configure(); - /* make sure all windows are visible */ for (it = client_list; it; it = g_list_next(it)) client_move_onscreen(it->data, FALSE); } @@ -1349,32 +1349,22 @@ typedef struct { void screen_update_areas(void) { - guint i, j, onum; + guint i, j; gulong *dims; GList *it; GSList *sit; - onum = screen_num_monitors; - g_free(monitor_area); extensions_xinerama_screens(&monitor_area, &screen_num_monitors); - if (screen_num_monitors < onum) { - /* free some of the pager popups */ - for (i = screen_num_monitors; i < onum; ++i) - pager_popup_free(desktop_popup[i]); - desktop_popup = g_renew(ObPagerPopup*, desktop_popup, - screen_num_monitors); - } - else { - /* add some more pager popups */ - desktop_popup = g_renew(ObPagerPopup*, desktop_popup, - screen_num_monitors); - for (i = onum; i < screen_num_monitors; ++i) { + if (!desktop_popup) { + desktop_popup = g_new(ObPagerPopup*, screen_num_monitors); + for (i = 0; i < screen_num_monitors; i++) { desktop_popup[i] = pager_popup_new(); pager_popup_height(desktop_popup[i], POPUP_HEIGHT); - if (screen_desktop_names) /* the areas are initialized before the - desktop names */ + + if (screen_desktop_names) + /* update the pager popup's width */ pager_popup_text_width_to_strings(desktop_popup[i], screen_desktop_names, screen_num_desktops); |
