X11Application: Ensure TIS operations are done on the main thread
Fixes: https://github.com/XQuartz/XQuartz/issues/205
Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
(cherry picked from commit b1afcecc61)
			
			
This commit is contained in:
		
							parent
							
								
									bd3564cf37
								
							
						
					
					
						commit
						663af2f17e
					
				|  | @ -1701,8 +1701,17 @@ handle_mouse: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|         if (darwinSyncKeymap) { |         if (darwinSyncKeymap) { | ||||||
|             TISInputSourceRef key_layout =  |             __block TISInputSourceRef key_layout; | ||||||
|                 TISCopyCurrentKeyboardLayoutInputSource(); |             dispatch_block_t copyCurrentKeyboardLayoutInputSource = ^{ | ||||||
|  |                 key_layout = TISCopyCurrentKeyboardLayoutInputSource(); | ||||||
|  |             }; | ||||||
|  |             /* This is an ugly ant-pattern, but it is more expedient to address the problem right now. */ | ||||||
|  |             if (pthread_main_np()) { | ||||||
|  |                 copyCurrentKeyboardLayoutInputSource(); | ||||||
|  |             } else { | ||||||
|  |                 dispatch_sync(dispatch_get_main_queue(), copyCurrentKeyboardLayoutInputSource); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|             TISInputSourceRef clear; |             TISInputSourceRef clear; | ||||||
|             if (CFEqual(key_layout, last_key_layout)) { |             if (CFEqual(key_layout, last_key_layout)) { | ||||||
|                 CFRelease(key_layout); |                 CFRelease(key_layout); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue