Clone in a terminal:
Commit bb43e7c
Johan Mattsson - 2015-10-07T14:26:41+00:00
bb43e7c4dd83c83dde2d248c50973d5acaeeaa7bjohan.mattsson.m@gmail.com

Lock for blocking background process

Changed files (12)

Diff

diff --git a/libbirdfont/GlyphCanvas.vala b/libbirdfont/GlyphCanvas.valaindex b2f62a7..5bbd063 100644--- a/libbirdfont/GlyphCanvas.vala+++ b/libbirdfont/GlyphCanvas.vala@@ -81,7 +81,7 @@ public class GlyphCanvas : GLib.Object { 	}
 
 	public void redraw_area (int x, int y, int w, int h) {
-		if (MenuTab.suppress_event) {
+		if (MenuTab.has_suppress_event ()) {
 			warning ("Do not call redraw from background thread.");
 		} else {
 			signal_redraw_area (x, y, w, h);
diff --git a/libbirdfont/KerningDisplay.vala b/libbirdfont/KerningDisplay.valaindex d4c5c0c..217d38c 100644--- a/libbirdfont/KerningDisplay.vala+++ b/libbirdfont/KerningDisplay.vala@@ -392,7 +392,7 @@ public class KerningDisplay : FontDisplay { 	public void set_absolute_kerning (int handle, double val) { 		double kern; 		-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -612,7 +612,7 @@ public class KerningDisplay : FontDisplay { 	public override void key_press (uint keyval) { 		unichar c; 		-		if (MenuTab.suppress_event) { // don't update kerning while saving font+		if (MenuTab.has_suppress_event ()) { // don't update kerning while saving font 			return; 		} 		@@ -680,7 +680,7 @@ public class KerningDisplay : FontDisplay { 		listener.signal_text_input.connect ((text) => { 			submitted_value = text; 			-			if (MenuTab.suppress_event) {+			if (MenuTab.has_suppress_event ()) { 				return; 			} 			@@ -719,7 +719,7 @@ public class KerningDisplay : FontDisplay { 		Glyph? g; 		string name; -		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -752,7 +752,7 @@ public class KerningDisplay : FontDisplay { 	public override void motion_notify (double ex, double ey) { 		double k, y; -		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 				@@ -866,7 +866,7 @@ public class KerningDisplay : FontDisplay { 		TextListener listener; 		string kerning = @"$(get_kerning_for_handle (selected_handle))"; -		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 				@@ -880,7 +880,7 @@ public class KerningDisplay : FontDisplay { 			string submitted_value; 			double parsed_value; 			-			if (MenuTab.suppress_event) {+			if (MenuTab.has_suppress_event ()) { 				return; 			} 		@@ -916,7 +916,7 @@ public class KerningDisplay : FontDisplay { 	public void add_text (string t) { 		int c; 		-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -932,7 +932,7 @@ public class KerningDisplay : FontDisplay { 		UndoItem ui; 		UndoItem redo_state; 		-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -951,7 +951,7 @@ public class KerningDisplay : FontDisplay { 	public override void redo () { 		UndoItem ui; 		-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		diff --git a/libbirdfont/LoadCallback.vala b/libbirdfont/LoadCallback.valaindex 3afb93f..890303d 100644--- a/libbirdfont/LoadCallback.vala+++ b/libbirdfont/LoadCallback.vala@@ -39,7 +39,7 @@ public class LoadCallback : GLib.Object { 	}  	public void load () {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return; 		}@@ -73,7 +73,7 @@ public class LoadCallback : GLib.Object { 	private void load_new_font () { 		FileChooser fc = new FileChooser (); 		-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return; 		}diff --git a/libbirdfont/MenuTab.vala b/libbirdfont/MenuTab.valaindex 0951704..e7e7106 100644--- a/libbirdfont/MenuTab.vala+++ b/libbirdfont/MenuTab.vala@@ -23,7 +23,7 @@ public class MenuTab : FontDisplay { 	 *  	 * This variable is used only in the gui thread. 	 */-	public static bool suppress_event;+	private static bool suppress_event;  	/** True if the background thread is running. */ 	public static bool background_thread;@@ -48,6 +48,16 @@ public class MenuTab : FontDisplay { 		background_thread = false; 	} +	public static bool has_suppress_event () {+		bool suppress;+		+		lock (suppress_event) {+			suppress = suppress_event;+		}+		+		return suppress;+	}+ 	public static void set_save_callback (SaveCallback c) { 		if (!save_callback.is_done) { 			warning ("Prevoius save command has not finished");@@ -567,7 +577,7 @@ public class MenuTab : FontDisplay { 	} 	 	public static void save_as ()  {-		if (MenuTab.suppress_event || !save_callback.is_done) {+		if (MenuTab.has_suppress_event () || !save_callback.is_done) { 			warn_if_test ("Event suppressed"); 			return; 		}@@ -577,7 +587,7 @@ public class MenuTab : FontDisplay { 	}  	public static void save ()  {-		if (MenuTab.suppress_event && !save_callback.is_done) {+		if (MenuTab.has_suppress_event () && !save_callback.is_done) { 			warn_if_test ("Event suppressed"); 			return; 		}@@ -587,7 +597,7 @@ public class MenuTab : FontDisplay { 	} 	 	public static void load () {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return; 		}diff --git a/libbirdfont/RecentFiles.vala b/libbirdfont/RecentFiles.valaindex e5e8fbb..45eefe2 100644--- a/libbirdfont/RecentFiles.vala+++ b/libbirdfont/RecentFiles.vala@@ -201,7 +201,7 @@ public class RecentFiles : Table { 		Font font; 		SaveDialogListener dialog = new SaveDialogListener (); -		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -211,7 +211,7 @@ public class RecentFiles : Table { 		MenuTab.load_callback.file_loaded.connect (() => { 			Font f; -			if (MenuTab.suppress_event) {+			if (MenuTab.has_suppress_event ()) { 				warning ("Load font event suppressed."); 				return; 			}@@ -234,7 +234,7 @@ public class RecentFiles : Table { 		dialog.signal_discard.connect (() => { 			Font f; -			if (MenuTab.suppress_event) {+			if (MenuTab.has_suppress_event ()) { 				return; 			} 			@@ -250,7 +250,7 @@ public class RecentFiles : Table { 		});  		dialog.signal_save.connect (() => {-			if (MenuTab.suppress_event) {+			if (MenuTab.has_suppress_event ()) { 				warn_if_test ("Event suppressed."); 				return; 			}diff --git a/libbirdfont/SaveCallback.vala b/libbirdfont/SaveCallback.valaindex a402a5d..56d96f2 100644--- a/libbirdfont/SaveCallback.vala+++ b/libbirdfont/SaveCallback.vala@@ -26,7 +26,7 @@ public class SaveCallback : GLib.Object { 	} 	 	public void save_as ()  {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return; 		}@@ -71,7 +71,7 @@ public class SaveCallback : GLib.Object { 		Font f; 		string fn; 		-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return; 		}diff --git a/libbirdfont/SpacingTab.vala b/libbirdfont/SpacingTab.valaindex 0fc1b98..8c2d2a9 100644--- a/libbirdfont/SpacingTab.vala+++ b/libbirdfont/SpacingTab.vala@@ -234,7 +234,7 @@ public class SpacingTab : KerningDisplay { 		listener.signal_text_input.connect ((text) => { 			submitted_value = text; 			-			if (MenuTab.suppress_event) {+			if (MenuTab.has_suppress_event ()) { 				return; 			} 			@@ -278,7 +278,7 @@ public class SpacingTab : KerningDisplay { 		listener.signal_text_input.connect ((text) => { 			submitted_value = text; 			-			if (MenuTab.suppress_event) {+			if (MenuTab.has_suppress_event ()) { 				return; 			} 			diff --git a/libbirdfont/StrokeTool.vala b/libbirdfont/StrokeTool.valaindex d4e3ffb..ee25bfc 100644--- a/libbirdfont/StrokeTool.vala+++ b/libbirdfont/StrokeTool.vala@@ -948,6 +948,11 @@ public class StrokeTool : Tool { 		foreach (EditPoint e in p.points) { 			if ((e.flags & EditPoint.CURVE) == 0) { 				p.set_new_start (e);+				print(@"start: $(e)");+				+				// FIXME:+				e.get_left_handle ().convert_to_line ();+				 				break; 			} 		}@@ -1033,7 +1038,7 @@ public class StrokeTool : Tool { 				simplified.add_point (ep.copy ()); 			} 		}-+		 		simplified.recalculate_linear_handles (); 		simplified.close (); 		remove_single_point_intersections (simplified);@@ -1337,6 +1342,9 @@ public class StrokeTool : Tool { 		previous_handle = previous.get_left_handle (); 		next_handle = next.get_right_handle (); 		+		previous_handle.convert_to_line ();+		next_handle.convert_to_line ();+		 		previous_handle.angle += PI; 		next_handle.angle += PI; 		diff --git a/libbirdfont/TabBar.vala b/libbirdfont/TabBar.valaindex 9a7be7e..3ade386 100644--- a/libbirdfont/TabBar.vala+++ b/libbirdfont/TabBar.vala@@ -85,7 +85,7 @@ public class TabBar : GLib.Object { 	public void motion (double x, double y) { 		MainWindow.set_cursor (NativeWindow.VISIBLE); 		-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return; 		}@@ -170,7 +170,7 @@ public class TabBar : GLib.Object { 	public bool select_char (string s) { 		int i = 0; 		-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return false; 		}@@ -187,7 +187,7 @@ public class TabBar : GLib.Object { 	}  	public bool select_tab_name (string s) {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return false; 		}@@ -196,7 +196,7 @@ public class TabBar : GLib.Object { 	}  	public void select_overview () {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return; 		}@@ -208,7 +208,7 @@ public class TabBar : GLib.Object { 		Tab t; 		bool open; 		-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return; 		}@@ -228,7 +228,7 @@ public class TabBar : GLib.Object { 	public void close_display (FontDisplay f) { 		int i = -1; 		-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return; 		}@@ -248,7 +248,7 @@ public class TabBar : GLib.Object { 	}   	public void close_all_tabs () {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return; 		}@@ -266,7 +266,7 @@ public class TabBar : GLib.Object { 		Tab empty_tab; 		GlyphCollection gc; -		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return false; 		}@@ -331,7 +331,7 @@ public class TabBar : GLib.Object { 	public bool selected_open_tab (Tab t) { 		int i = 0; -		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return false; 		}@@ -369,7 +369,7 @@ public class TabBar : GLib.Object { 	public bool selected_open_tab_by_name (string t) { 		int i = 0; 		-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return false; 		}@@ -407,7 +407,7 @@ public class TabBar : GLib.Object { 	public void select_tab (int index, bool signal_selected = true) { 		Tab t; -		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return; 		}@@ -567,7 +567,7 @@ public class TabBar : GLib.Object { 		int s = (tabs.size == 0) ? 0 : selected + 1; 		Tab t; -		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return; 		}@@ -596,7 +596,7 @@ public class TabBar : GLib.Object { 	public bool add_unique_tab (FontDisplay display_item, bool signal_selected = true) { 		bool i; 		-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return false; 		}diff --git a/libbirdfont/TabContent.vala b/libbirdfont/TabContent.valaindex f7415d2..fcc67fe 100644--- a/libbirdfont/TabContent.vala+++ b/libbirdfont/TabContent.vala@@ -31,14 +31,14 @@ public class TabContent : GLib.Object { 	static double last_press_time = 0; 	 	public static void zoom_in () {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 		} 		 		GlyphCanvas.current_display.zoom_in (); 	} 	 	public static void zoom_out () {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -46,7 +46,7 @@ public class TabContent : GLib.Object { 	} 	 	public static void move_view (double x, double y) {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -54,7 +54,7 @@ public class TabContent : GLib.Object { 	} 	 	public static bool has_scrollbar () {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return false; 		} 		@@ -62,7 +62,7 @@ public class TabContent : GLib.Object { 	} 	 	public static void scroll_to (double percent) {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -73,7 +73,7 @@ public class TabContent : GLib.Object { 		AbstractMenu menu; 		Dialog dialog; 		-		if (unlikely (MenuTab.suppress_event)) {+		if (unlikely (MenuTab.has_suppress_event ())) { 			cr.save (); 			Theme.color (cr, "Background 1"); 			cr.rectangle (0, 0, allocation.width, allocation.height);@@ -118,7 +118,7 @@ public class TabContent : GLib.Object { 		Context cr; 		WidgetAllocation alloc; 		-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warning ("Background surface already created."); 			return; 		}@@ -131,7 +131,7 @@ public class TabContent : GLib.Object { 	} 	 	public static void key_press (uint keyval) {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -146,7 +146,7 @@ public class TabContent : GLib.Object { 	} 	 	public static void key_release (uint keyval) {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} @@ -160,7 +160,7 @@ public class TabContent : GLib.Object { 	public static void motion_notify (double x, double y) { 		Toolbox toolbox; 		-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -176,7 +176,7 @@ public class TabContent : GLib.Object { 	} 	 	public static void button_release (int button, double x, double y) {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -194,7 +194,7 @@ public class TabContent : GLib.Object { 	} 	 	public static void button_press (uint button, double x, double y) {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} @@ -217,7 +217,7 @@ public class TabContent : GLib.Object { 	}  	public static void double_click (uint button, double ex, double ey) {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -229,7 +229,7 @@ public class TabContent : GLib.Object { 	public static void scroll_wheel_pixel_delta (double x, double y,  		double pixeldelta_x, double pixeldelta_y) { 			-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -239,7 +239,7 @@ public class TabContent : GLib.Object { 	} 		 	public static void scroll_wheel_up (double x, double y) {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -249,7 +249,7 @@ public class TabContent : GLib.Object { 	} 	 	public static void scroll_wheel_down (double x, double y) {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -259,7 +259,7 @@ public class TabContent : GLib.Object { 	}  	public static void tap_down (int finger, int x, int y) {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -269,7 +269,7 @@ public class TabContent : GLib.Object { 	} 	 	public static void tap_up (int finger, int x, int y) {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -279,7 +279,7 @@ public class TabContent : GLib.Object { 	} 	 	public static void tap_move (int finger, int x, int y) {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -289,7 +289,7 @@ public class TabContent : GLib.Object { 	} 		 	public static void undo () {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		@@ -297,7 +297,7 @@ public class TabContent : GLib.Object { 	}  	public static void redo () {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			return; 		} 		diff --git a/libbirdfont/Toolbox.vala b/libbirdfont/Toolbox.valaindex ebc8d5f..899da2f 100644--- a/libbirdfont/Toolbox.vala+++ b/libbirdfont/Toolbox.vala@@ -144,7 +144,7 @@ public class Toolbox : GLib.Object  { 	} 	 	public void press (uint button, double x, double y) {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return; 		}@@ -171,7 +171,7 @@ public class Toolbox : GLib.Object  { 		 		y -= current_set.scroll; 		-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return; 		}@@ -198,7 +198,7 @@ public class Toolbox : GLib.Object  { 	}  	public void double_click (uint button, double x, double y) {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return; 		}@@ -219,7 +219,7 @@ public class Toolbox : GLib.Object  { 		 		y -= current_set.scroll; 		-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Event suppressed"); 			return; 		}@@ -331,7 +331,7 @@ public class Toolbox : GLib.Object  { 	}  	public static void redraw_tool_box () {-		if (MenuTab.suppress_event) {+		if (MenuTab.has_suppress_event ()) { 			warn_if_test ("Don't redraw toolbox when background thread is running."); 			return; 		}diff --git a/libbirdfont/ZoomBar.vala b/libbirdfont/ZoomBar.valaindex 16933d0..6387b62 100644--- a/libbirdfont/ZoomBar.vala+++ b/libbirdfont/ZoomBar.vala@@ -79,7 +79,7 @@ public class ZoomBar : Tool { 		 		set_zoom (zoom_level); 		-		if (!MenuTab.suppress_event) {+		if (!MenuTab.has_suppress_event ()) { 			new_zoom (zoom_level); 		} 		

Contact

Email: johan.mattsson.m@gmail.com
Mastodon: typo.social/@birdfont
GitHub: johanmattssonm
LinkedIn: johan-mattsson-2ab324112