[Xfce4-commits] [panel-plugins/xfce4-pulseaudio-plugin] 01/03: Fixed a crash in menu popup/popdown
noreply at xfce.org
noreply at xfce.org
Mon Mar 9 01:09:58 CET 2015
This is an automated email from the git hooks/post-receive script.
andrzejr pushed a commit to branch master
in repository panel-plugins/xfce4-pulseaudio-plugin.
commit bdc61d057f3197cbc553ce9f83a979e912f4f802
Author: Andrzej <ndrwrdck at gmail.com>
Date: Sun Mar 8 23:57:42 2015 +0000
Fixed a crash in menu popup/popdown
Seems like creating/destroying menus leaks memory.
---
panel-plugin/pulseaudio-button.c | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/panel-plugin/pulseaudio-button.c b/panel-plugin/pulseaudio-button.c
index 631b3ea..d064be8 100644
--- a/panel-plugin/pulseaudio-button.c
+++ b/panel-plugin/pulseaudio-button.c
@@ -199,22 +199,25 @@ pulseaudio_button_button_press (GtkWidget *widget,
{
PulseaudioButton *button = PULSEAUDIO_BUTTON (widget);
- if(event->button == 1) /* left button */
+ if(event->button == 1 && button->menu == NULL) /* left button */
{
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
- if (button->menu == NULL)
- button->menu = pulseaudio_menu_new (button->volume, button->config, widget);
+ button->menu = pulseaudio_menu_new (button->volume, button->config, widget);
+ gtk_menu_attach_to_widget (GTK_MENU (button->menu), widget, NULL);
+
if (button->deactivate_id == 0)
+ {
button->deactivate_id = g_signal_connect_swapped
(GTK_MENU_SHELL (button->menu), "deactivate",
G_CALLBACK (pulseaudio_button_menu_deactivate), button);
+ }
gtk_menu_popup (GTK_MENU (button->menu),
NULL, NULL,
xfce_panel_plugin_position_menu, button->plugin,
//NULL, NULL,
- 0,
- gtk_get_current_event_time ());
+ 1,
+ event->time);
return TRUE;
}
@@ -258,6 +261,13 @@ pulseaudio_button_menu_deactivate (PulseaudioButton *button,
button->deactivate_id = 0;
}
+ if (button->menu != NULL)
+ {
+ gtk_menu_detach (GTK_MENU (button->menu));
+ gtk_menu_popdown (GTK_MENU (button->menu));
+ button->menu = NULL;
+ }
+
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), FALSE);
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list