mirror of
https://github.com/reactos/wine.git
synced 2024-11-28 22:20:26 +00:00
Don't hang around for a minute if we can't exec the clipboard server.
This commit is contained in:
parent
392f6f8775
commit
68ef5e0327
@ -235,6 +235,7 @@ BOOL X11DRV_CLIPBOARD_LaunchServer()
|
|||||||
char clearSelection[8] = "0";
|
char clearSelection[8] = "0";
|
||||||
int persistent_selection = 1;
|
int persistent_selection = 1;
|
||||||
HKEY hkey;
|
HKEY hkey;
|
||||||
|
int fd[2], err;
|
||||||
|
|
||||||
/* If persistant selection has been disabled in the .winerc Clipboard section,
|
/* If persistant selection has been disabled in the .winerc Clipboard section,
|
||||||
* don't launch the server
|
* don't launch the server
|
||||||
@ -258,6 +259,10 @@ BOOL X11DRV_CLIPBOARD_LaunchServer()
|
|||||||
* take ownership of the X selection and continue to service selection
|
* take ownership of the X selection and continue to service selection
|
||||||
* requests from other apps.
|
* requests from other apps.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
if(pipe(fd) == -1) return FALSE;
|
||||||
|
fcntl(fd[1], F_SETFD, 1); /* set close on exec */
|
||||||
|
|
||||||
selectionWindow = selectionPrevWindow;
|
selectionWindow = selectionPrevWindow;
|
||||||
if ( !fork() )
|
if ( !fork() )
|
||||||
{
|
{
|
||||||
@ -267,6 +272,7 @@ BOOL X11DRV_CLIPBOARD_LaunchServer()
|
|||||||
int dbgClasses = 0;
|
int dbgClasses = 0;
|
||||||
char selMask[8], dbgClassMask[8];
|
char selMask[8], dbgClassMask[8];
|
||||||
|
|
||||||
|
close(fd[0]);
|
||||||
sprintf(selMask, "%d", selectionAcquired);
|
sprintf(selMask, "%d", selectionAcquired);
|
||||||
|
|
||||||
/* Build the debug class mask to pass to the server, by inheriting
|
/* Build the debug class mask to pass to the server, by inheriting
|
||||||
@ -287,8 +293,16 @@ BOOL X11DRV_CLIPBOARD_LaunchServer()
|
|||||||
|
|
||||||
/* Exec Failed! */
|
/* Exec Failed! */
|
||||||
perror("Could not start Wine clipboard server");
|
perror("Could not start Wine clipboard server");
|
||||||
exit( 1 ); /* Exit the child process */
|
write(fd[1], &err, sizeof(err));
|
||||||
|
_exit( 1 ); /* Exit the child process */
|
||||||
}
|
}
|
||||||
|
close(fd[1]);
|
||||||
|
|
||||||
|
if(read(fd[0], &err, sizeof(err)) > 0) { /* exec failed */
|
||||||
|
close(fd[0]);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
close(fd[0]);
|
||||||
|
|
||||||
/* Wait until the clipboard server acquires the selection.
|
/* Wait until the clipboard server acquires the selection.
|
||||||
* We must release the windows lock to enable Wine to process
|
* We must release the windows lock to enable Wine to process
|
||||||
|
Loading…
Reference in New Issue
Block a user