13
0

Fix (in inverted commas) #2885.

git-svn-id: svn://localhost/ardour2/branches/3.0@7402 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Carl Hetherington 2010-07-09 02:45:15 +00:00
parent a811f69104
commit 2578d5da0e

View File

@ -184,7 +184,20 @@ UI::load_rcfile (string path, bool themechange)
fatal_widget.set_name ("FatalMessage");
delete fatal_style;
fatal_style = new Glib::RefPtr<Style>(rc.get_style(fatal_widget));
/* This next line and the similar ones below are sketchily
* guessed to fix #2885. I think maybe that problems occur
* because with gtk_rc_get_style (to quote its docs) "no
* refcount is added to the returned style". So I've switched
* this to use Glib::wrap with take_copy == true, which requires
* all the nasty casts and calls to plain-old-C GTK.
*
* At worst I think this causes a memory leak; at least it appears
* to fix the bug.
*
* I could be wrong about any or all of the above.
*/
fatal_style = new Glib::RefPtr<Style> (Glib::wrap (gtk_rc_get_style (reinterpret_cast<GtkWidget*> (fatal_widget.gobj())), true));
fatal_ptag->property_font_desc().set_value((*fatal_style)->get_font());
fatal_ptag->property_foreground_gdk().set_value((*fatal_style)->get_fg(STATE_ACTIVE));
@ -195,7 +208,7 @@ UI::load_rcfile (string path, bool themechange)
error_widget.set_name ("ErrorMessage");
delete error_style;
error_style = new Glib::RefPtr<Style>(rc.get_style(error_widget));
error_style = new Glib::RefPtr<Style> (Glib::wrap (gtk_rc_get_style (reinterpret_cast<GtkWidget*> (error_widget.gobj())), true));
error_ptag->property_font_desc().set_value((*error_style)->get_font());
error_ptag->property_foreground_gdk().set_value((*error_style)->get_fg(STATE_ACTIVE));
@ -206,7 +219,7 @@ UI::load_rcfile (string path, bool themechange)
warning_widget.set_name ("WarningMessage");
delete warning_style;
warning_style = new Glib::RefPtr<Style>(rc.get_style(warning_widget));
warning_style = new Glib::RefPtr<Style> (Glib::wrap (gtk_rc_get_style (reinterpret_cast<GtkWidget*> (warning_widget.gobj())), true));
warning_ptag->property_font_desc().set_value((*warning_style)->get_font());
warning_ptag->property_foreground_gdk().set_value((*warning_style)->get_fg(STATE_ACTIVE));
@ -217,7 +230,7 @@ UI::load_rcfile (string path, bool themechange)
info_widget.set_name ("InfoMessage");
delete info_style;
info_style = new Glib::RefPtr<Style>(rc.get_style(info_widget));
info_style = new Glib::RefPtr<Style> (Glib::wrap (gtk_rc_get_style (reinterpret_cast<GtkWidget*> (info_widget.gobj())), true));
info_ptag->property_font_desc().set_value((*info_style)->get_font());
info_ptag->property_foreground_gdk().set_value((*info_style)->get_fg(STATE_ACTIVE));