diff options
author | Dave Davenport <qball@gmpclient.org> | 2019-12-20 15:49:33 +0100 |
---|---|---|
committer | Dave Davenport <qball@gmpclient.org> | 2019-12-20 15:49:33 +0100 |
commit | b71f51523a7de3bf1ac32f24f6e7dd32355e6690 (patch) | |
tree | bfc18fe9e73d081926d56ec61feff0bc62e3cbba | |
parent | 23124213924c5e61910bf447b2baf493ce7509bc (diff) |
[Window] Remove arbitrary limit of 100 windows.
Fixes: #1047
-rw-r--r-- | source/dialogs/window.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/source/dialogs/window.c b/source/dialogs/window.c index ba244a03..37410f3e 100644 --- a/source/dialogs/window.c +++ b/source/dialogs/window.c @@ -470,7 +470,7 @@ static void _window_mode_load_data ( Mode *sw, unsigned int cd ) ModeModePrivateData *pd = (ModeModePrivateData *) mode_get_private_data ( sw ); // find window list int nwins = 0; - xcb_window_t wins[100]; + xcb_window_t *wins = NULL; xcb_window_t curr_win_id; // Create cache @@ -491,15 +491,15 @@ static void _window_mode_load_data ( Mode *sw, unsigned int cd ) c = xcb_ewmh_get_client_list_stacking ( &xcb->ewmh, 0 ); xcb_ewmh_get_windows_reply_t clients; if ( xcb_ewmh_get_client_list_stacking_reply ( &xcb->ewmh, c, &clients, NULL ) ) { - nwins = MIN ( 100, clients.windows_len ); - memcpy ( wins, clients.windows, nwins * sizeof ( xcb_window_t ) ); + nwins = clients.windows_len; + wins = g_memdup(clients.windows, (nwins)*sizeof(xcb_window_t)); xcb_ewmh_get_windows_reply_wipe ( &clients ); } else { c = xcb_ewmh_get_client_list ( &xcb->ewmh, xcb->screen_nbr ); if ( xcb_ewmh_get_client_list_reply ( &xcb->ewmh, c, &clients, NULL ) ) { - nwins = MIN ( 100, clients.windows_len ); - memcpy ( wins, clients.windows, nwins * sizeof ( xcb_window_t ) ); + nwins = clients.windows_len; + wins = g_memdup(clients.windows, (nwins)*sizeof(xcb_window_t)); xcb_ewmh_get_windows_reply_wipe ( &clients ); } } @@ -586,6 +586,7 @@ static void _window_mode_load_data ( Mode *sw, unsigned int cd ) xcb_ewmh_get_utf8_strings_reply_wipe ( &names ); } } + g_free ( wins ); } static int window_mode_init ( Mode *sw ) { |