XQuartz: pbproxy: Wait for the server to finish starting up, so display is valid.
Signed-off-by: Jeremy Huddleston <jeremyhu@freedesktop.org>
This commit is contained in:
parent
15fc56addc
commit
e87a03fd53
|
@ -37,7 +37,11 @@
|
|||
static const char *app_prefs_domain = "org.x.X11";
|
||||
CFStringRef app_prefs_domain_cfstr;
|
||||
|
||||
/* Stubs */
|
||||
char *display = NULL;
|
||||
BOOL serverInitComplete = YES;
|
||||
pthread_mutex_t serverInitCompleteMutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
pthread_cond_t serverInitCompleteCond = PTHREAD_COND_INITIALIZER;
|
||||
|
||||
static void signal_handler (int sig) {
|
||||
switch(sig) {
|
||||
|
|
|
@ -47,6 +47,20 @@ BOOL xpbproxy_is_standalone = NO;
|
|||
|
||||
x_selection *_selection_object;
|
||||
|
||||
extern BOOL serverInitComplete;
|
||||
extern pthread_mutex_t serverInitCompleteMutex;
|
||||
extern pthread_cond_t serverInitCompleteCond;
|
||||
|
||||
static inline void wait_for_server_init(void) {
|
||||
/* If the server hasn't finished initializing, wait for it... */
|
||||
if(!serverInitComplete) {
|
||||
pthread_mutex_lock(&serverInitCompleteMutex);
|
||||
while(!serverInitComplete)
|
||||
pthread_cond_wait(&serverInitCompleteCond, &serverInitCompleteMutex);
|
||||
pthread_mutex_unlock(&serverInitCompleteMutex);
|
||||
}
|
||||
}
|
||||
|
||||
static int x_io_error_handler (Display *dpy) {
|
||||
/* We lost our connection to the server. */
|
||||
|
||||
|
@ -85,6 +99,8 @@ static void *xpbproxy_x_thread(void *args) {
|
|||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||
size_t i;
|
||||
|
||||
wait_for_server_init();
|
||||
|
||||
for(i=0, xpbproxy_dpy=NULL; !xpbproxy_dpy && i<5; i++) {
|
||||
xpbproxy_dpy = XOpenDisplay(NULL);
|
||||
|
||||
|
|
Loading…
Reference in New Issue