Explorar el Código

tools: do not log to destroyed ConsoleView

Daniele Bartolini hace 5 años
padre
commit
42563229a4
Se han modificado 2 ficheros con 10 adiciones y 1 borrados
  1. 2 1
      tools/level_editor/level_editor.vala
  2. 8 0
      tools/widgets/console_view.vala

+ 2 - 1
tools/level_editor/level_editor.vala

@@ -2193,6 +2193,7 @@ public static GLib.File _console_history_file;
 
 public static GLib.FileStream _log_stream;
 public static ConsoleView _console_view;
+public static bool _console_view_valid = false;
 
 public static void log(string system, string severity, string message)
 {
@@ -2210,7 +2211,7 @@ public static void log(string system, string severity, string message)
 		_log_stream.flush();
 	}
 
-	if (_console_view != null)
+	if (_console_view_valid)
 		_console_view.log(severity, line);
 }
 

+ 8 - 0
tools/widgets/console_view.vala

@@ -131,8 +131,11 @@ public class ConsoleView : Gtk.Box
 		this.pack_start(_entry_hbox, false, true, 0);
 
 		this.show.connect(on_show);
+		this.destroy.connect(on_destroy);
 
 		this.get_style_context().add_class("console-view");
+
+		_console_view_valid = true;
 	}
 
 	private void on_entry_activated()
@@ -204,6 +207,11 @@ public class ConsoleView : Gtk.Box
 		_entry.grab_focus_without_selecting();
 	}
 
+	private void on_destroy()
+	{
+		_console_view_valid = false;
+	}
+
 	public void log(string severity, string message)
 	{
 		string line = message;