Commit Diff


commit - 243943f63dac33bd84f18ae5c81cff8f79d4b29f
commit + f300c925ecb7ebc05b5b65b00e0c845cbd4965d5
blob - 38cb4a714d73a34d03df0760e883cf0196000dbc
blob + 674de2c51543e1af563af32b17a4d609805167ec
--- tog/tog.c
+++ tog/tog.c
@@ -40,6 +40,7 @@
 #include <pthread.h>
 #include <libgen.h>
 #include <regex.h>
+#include <sched.h>
 
 #include "got_version.h"
 #include "got_error.h"
@@ -1716,6 +1717,15 @@ view_input(struct tog_view **new, int *done, struct to
 	}
 
 	if (view->searching && !view->search_next_done) {
+		errcode = pthread_mutex_unlock(&tog_mutex);
+		if (errcode)
+			return got_error_set_errno(errcode,
+			    "pthread_mutex_unlock");
+		sched_yield();
+		errcode = pthread_mutex_lock(&tog_mutex);
+		if (errcode)
+			return got_error_set_errno(errcode,
+			    "pthread_mutex_lock");
 		view->search_next(view);
 		return NULL;
 	}