Nicolas Cannasse 18 년 전
부모
커밋
50d4aad8d9
1개의 변경된 파일10개의 추가작업 그리고 1개의 파일을 삭제
  1. 10 1
      std/neko/vm/Ui.hx

+ 10 - 1
std/neko/vm/Ui.hx

@@ -19,13 +19,22 @@ class Os {
 	}
 
 	public static function syncResult<T>( f : Void -> T ) : T {
+		if( isMainThread() )
+			return f();
 		var l = new Lock();
 		var tmp = null;
+		var exc = null;
 		_sync(function() {
-			tmp = f();
+			try {
+				tmp = f();
+			} catch( e : Dynamic ) {
+				exc = { v : e };
+			}
 			l.release();
 		});
 		l.wait();
+		if( exc != null )
+			throw exc.v;
 		return tmp;
 	}