XQuartz: pbproxy: SIGHUP reloads preferences.
(cherry picked from commit cbc0935ef74ebd76ed3db16d6ab86043eeed42a3)
This commit is contained in:
parent
0b69526217
commit
2d764e21f2
|
@ -10,8 +10,16 @@
|
|||
#include <unistd.h> /*for getpid*/
|
||||
#include <Cocoa/Cocoa.h>
|
||||
|
||||
BOOL prefs_reload = NO;
|
||||
|
||||
static void signal_handler (int sig) {
|
||||
_exit(0);
|
||||
switch(sig) {
|
||||
case SIGHUP:
|
||||
prefs_reload = YES;
|
||||
break;
|
||||
default:
|
||||
_exit(EXIT_SUCCESS);
|
||||
}
|
||||
}
|
||||
|
||||
int main (int argc, const char *argv[]) {
|
||||
|
@ -19,15 +27,16 @@ int main (int argc, const char *argv[]) {
|
|||
printf("pid: %u\n", getpid());
|
||||
#endif
|
||||
|
||||
if(x_init () !=0)
|
||||
return 1;
|
||||
if(!x_init())
|
||||
return EXIT_FAILURE;
|
||||
|
||||
signal (SIGINT, signal_handler);
|
||||
signal (SIGTERM, signal_handler);
|
||||
signal (SIGHUP, signal_handler);
|
||||
signal (SIGPIPE, SIG_IGN);
|
||||
|
||||
[NSApplication sharedApplication];
|
||||
[NSApp run];
|
||||
|
||||
return 0;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
|
|
@ -34,13 +34,13 @@ static int x_error_handler (Display *dpy, XErrorEvent *errevent) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
int x_init (void) {
|
||||
BOOL x_init (void) {
|
||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||
|
||||
x_dpy = XOpenDisplay (NULL);
|
||||
if (x_dpy == NULL) {
|
||||
fprintf (stderr, "can't open default display\n");
|
||||
return 1;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
XSetIOErrorHandler (x_io_error_handler);
|
||||
|
@ -49,7 +49,7 @@ int x_init (void) {
|
|||
if (!XAppleWMQueryExtension (x_dpy, &x_apple_wm_event_base,
|
||||
&x_apple_wm_error_base)) {
|
||||
fprintf (stderr, "can't open AppleWM server extension\n");
|
||||
return 1;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
have_xfixes = XFixesQueryExtension(x_dpy, &x_xfixes_event_base, &x_xfixes_error_base);
|
||||
|
@ -59,12 +59,13 @@ int x_init (void) {
|
|||
|
||||
_selection_object = [[x_selection alloc] init];
|
||||
|
||||
x_input_register ();
|
||||
x_input_run ();
|
||||
if(!x_input_register())
|
||||
return FALSE;
|
||||
x_input_run();
|
||||
|
||||
[pool release];
|
||||
|
||||
return 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
id x_selection_object (void) {
|
||||
|
|
|
@ -16,12 +16,16 @@
|
|||
#define DEBUG 0
|
||||
#endif
|
||||
|
||||
#ifndef INTEGRATED_XPBPROXY
|
||||
extern BOOL prefs_reload;
|
||||
#endif
|
||||
|
||||
/* from main.m */
|
||||
extern void x_set_is_active (BOOL state);
|
||||
extern BOOL x_get_is_active (void);
|
||||
extern id x_selection_object (void);
|
||||
extern Time x_current_timestamp (void);
|
||||
extern int x_init (void);
|
||||
extern BOOL x_init (void);
|
||||
|
||||
extern Display *x_dpy;
|
||||
extern int x_apple_wm_event_base, x_apple_wm_error_base;
|
||||
|
@ -29,7 +33,7 @@ extern int x_xfixes_event_base, x_xfixes_error_base;
|
|||
extern BOOL have_xfixes;
|
||||
|
||||
/* from x-input.m */
|
||||
extern void x_input_register (void);
|
||||
extern BOOL x_input_register (void);
|
||||
extern void x_input_run (void);
|
||||
|
||||
#if DEBUG == 0
|
||||
|
|
|
@ -102,7 +102,7 @@ void x_input_run (void) {
|
|||
[pool release];
|
||||
}
|
||||
|
||||
static int add_input_socket (int sock, CFOptionFlags callback_types,
|
||||
static BOOL add_input_socket (int sock, CFOptionFlags callback_types,
|
||||
CFSocketCallBack callback, const CFSocketContext *ctx,
|
||||
CFRunLoopSourceRef *cf_source) {
|
||||
CFSocketRef cf_sock;
|
||||
|
@ -128,12 +128,18 @@ static int add_input_socket (int sock, CFOptionFlags callback_types,
|
|||
|
||||
static void x_input_callback (CFSocketRef sock, CFSocketCallBackType type,
|
||||
CFDataRef address, const void *data, void *info) {
|
||||
x_input_run ();
|
||||
|
||||
#ifndef INTEGRATED_XPBPROXY
|
||||
if(prefs_reload) {
|
||||
[x_selection_object() reload_preferences];
|
||||
prefs_reload = NO;
|
||||
}
|
||||
#endif
|
||||
|
||||
x_input_run();
|
||||
}
|
||||
|
||||
void x_input_register(void) {
|
||||
if (!add_input_socket (ConnectionNumber (x_dpy), kCFSocketReadCallBack,
|
||||
x_input_callback, NULL, &x_dpy_source)) {
|
||||
exit (1);
|
||||
}
|
||||
BOOL x_input_register(void) {
|
||||
return add_input_socket(ConnectionNumber(x_dpy), kCFSocketReadCallBack,
|
||||
x_input_callback, NULL, &x_dpy_source);
|
||||
}
|
||||
|
|
|
@ -78,6 +78,7 @@ static struct {
|
|||
|
||||
static struct propdata null_propdata = {NULL, 0};
|
||||
|
||||
#ifdef DEBUG
|
||||
static void
|
||||
dump_prefs (FILE *fp) {
|
||||
fprintf(fp,
|
||||
|
@ -93,7 +94,7 @@ dump_prefs (FILE *fp) {
|
|||
pbproxy_prefs.pasteboard_to_primary,
|
||||
pbproxy_prefs.pasteboard_to_clipboard);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#define APP_PREFS "org.x.X11"
|
||||
static BOOL
|
||||
|
|
Loading…
Reference in New Issue