105 #define AWT_ASSERT_APPKIT_THREAD \
106 do { \
107 while (pthread_main_np() == 0) {} \
108 } while (0)
109
110 #define AWT_ASSERT_NOT_APPKIT_THREAD \
111 do { \
112 while (pthread_main_np() != 0) {} \
113 } while (0)
114
115 #endif /* AWT_THREAD_ASSERTS_WAIT */
116
117 #else /* AWT_THREAD_ASSERTS */
118
119 #define AWT_ASSERT_APPKIT_THREAD do {} while (0)
120 #define AWT_ASSERT_NOT_APPKIT_THREAD do {} while (0)
121
122 #endif /* AWT_THREAD_ASSERTS */
123 // --------------------------------------------------------------------------
124
125 // This tracks if we are current inside of a performOnMainThread that is both waiting and in the AWTRunLoopMode
126 extern BOOL sInPerformFromJava;
127
128 // This is an empty Obj-C object just so that -performSelectorOnMainThread
129 // can be used, and to use the Obj-C +initialize feature.
130 __attribute__((visibility("default")))
131 @interface ThreadUtilities : NSObject { }
132
133 + (JNIEnv*)getJNIEnv;
134 + (JNIEnv*)getJNIEnvUncached;
135
136 + (void)performOnMainThread:(SEL)aSelector onObject:(id)target withObject:(id)arg waitUntilDone:(BOOL)wait awtMode:(BOOL)inAWT;
137
138 //Wrappers for the corresponding JNFRunLoop methods with a check for main thread
139 + (void)performOnMainThreadWaiting:(BOOL)wait block:(void (^)())block;
140 + (void)performOnMainThread:(SEL)aSelector on:(id)target withObject:(id)arg waitUntilDone:(BOOL)wait;
141 @end
142
143 void OSXAPP_SetJavaVM(JavaVM *vm);
144
145 #endif /* __THREADUTILITIES_H */
|
105 #define AWT_ASSERT_APPKIT_THREAD \
106 do { \
107 while (pthread_main_np() == 0) {} \
108 } while (0)
109
110 #define AWT_ASSERT_NOT_APPKIT_THREAD \
111 do { \
112 while (pthread_main_np() != 0) {} \
113 } while (0)
114
115 #endif /* AWT_THREAD_ASSERTS_WAIT */
116
117 #else /* AWT_THREAD_ASSERTS */
118
119 #define AWT_ASSERT_APPKIT_THREAD do {} while (0)
120 #define AWT_ASSERT_NOT_APPKIT_THREAD do {} while (0)
121
122 #endif /* AWT_THREAD_ASSERTS */
123 // --------------------------------------------------------------------------
124
125 __attribute__((visibility("default")))
126 @interface ThreadUtilities { }
127
128 + (JNIEnv*)getJNIEnv;
129 + (JNIEnv*)getJNIEnvUncached;
130
131 //Wrappers for the corresponding JNFRunLoop methods with a check for main thread
132 + (void)performOnMainThreadWaiting:(BOOL)wait block:(void (^)())block;
133 + (void)performOnMainThread:(SEL)aSelector on:(id)target withObject:(id)arg waitUntilDone:(BOOL)wait;
134 @end
135
136 void OSXAPP_SetJavaVM(JavaVM *vm);
137
138 #endif /* __THREADUTILITIES_H */
|