#include <ardour/audioengine.h>
#include <gtkmm/main.h>
+
+#include <gtkmm2ext/application.h>
#include <gtkmm2ext/popup.h>
#include <gtkmm2ext/utils.h>
}
ui->run (text_receiver);
+ Gtkmm2ext::Application::instance()->cleanup();
ui = 0;
ARDOUR::cleanup ();
*
*/
+static gint _exiting = 0;
+
static guint
gdk_quartz_keyval_to_ns_keyval (guint keyval)
{
GClosure *accel_closure,
GtkWidget *widget)
{
- GNSMenuItem *cocoa_item = cocoa_menu_item_get (widget);
+ GNSMenuItem *cocoa_item;
GtkWidget *label;
+ if (_exiting)
+ return;
+
+ cocoa_item = cocoa_menu_item_get (widget);
get_menu_label_text (widget, &label);
if (GTK_IS_ACCEL_LABEL (label) &&
GParamSpec *pspec,
gpointer data)
{
- GNSMenuItem *cocoa_item = cocoa_menu_item_get (GTK_WIDGET (object));
+ GNSMenuItem *cocoa_item;
+
+ if (_exiting)
+ return;
+
+ cocoa_item = cocoa_menu_item_get (GTK_WIDGET (object));
if (!strcmp (pspec->name, "label"))
{
GParamSpec *pspec,
NSMenuItem *cocoa_item)
{
+ if (_exiting)
+ return;
+
if (!strcmp (pspec->name, "sensitive") ||
!strcmp (pspec->name, "visible"))
{
extern "C" void
gtk_application_cleanup()
{
- if (_window_menu)
+ _exiting = 1;
+
+ if (_window_menu) {
[ _window_menu release ];
- if (_app_menu)
+ _window_menu = 0;
+ }
+ if (_app_menu) {
[ _app_menu release ];
- if (_main_menubar)
+ _app_menu = 0;
+ }
+ if (_main_menubar) {
[ _main_menubar release ];
+ _main_menubar = 0;
+ }
}