diff --git a/src/sview/sview.c b/src/sview/sview.c
index a59d678a8e357562f8cb80090f2ff7cda5279627..35b65b8b45048b6d1ddb63d93dd87792d0d4faae 100644
--- a/src/sview/sview.c
+++ b/src/sview/sview.c
@@ -109,9 +109,14 @@ void *_page_thr(void *arg)
 	GtkTable *table = page->table;
 	display_data_t *display_data = &main_display_data[num];
 	xfree(page);
+	static int thread_count = 0;
 
+	gdk_threads_enter();
 	sview_reset_grid();
-
+	thread_count++;
+	gdk_flush();
+	gdk_threads_leave();
+		
 	while(page_running[num]) {
 		g_static_mutex_lock(&sview_mutex);
 		gdk_threads_enter();
@@ -120,9 +125,24 @@ void *_page_thr(void *arg)
 		gdk_flush();
 		gdk_threads_leave();
 		g_static_mutex_unlock(&sview_mutex);
+
 		sleep(global_sleep_time);
-	}	
 		
+		gdk_threads_enter();
+		if(thread_count > 1) {
+			gdk_flush();
+			gdk_threads_leave();	
+			break;
+		}
+		gdk_flush();
+		gdk_threads_leave();
+	
+	}	
+	gdk_threads_enter();
+	thread_count--;
+	gdk_flush();
+	gdk_threads_leave();
+					
 	return NULL;
 }