[PATCH 2/5] syndaemon: move shm code into shm_init().
Henrik Rydberg
rydberg at euromail.se
Mon Mar 2 14:25:49 PST 2009
Peter Hutterer wrote:
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
> tools/syndaemon.c | 37 +++++++++++++++++++++++--------------
> 1 files changed, 23 insertions(+), 14 deletions(-)
>
> diff --git a/tools/syndaemon.c b/tools/syndaemon.c
> index 820b36c..64a26da 100644
> --- a/tools/syndaemon.c
> +++ b/tools/syndaemon.c
> @@ -431,6 +431,28 @@ void record_main_loop(Display* display, double idle_time) {
> }
> #endif /* HAVE_XRECORD */
>
> +static int
> +shm_init()
> +{
> + int shmid;
> +
> + /* Connect to the shared memory area */
> + if ((shmid = shmget(SHM_SYNAPTICS, sizeof(SynapticsSHM), 0)) == -1) {
> + if ((shmid = shmget(SHM_SYNAPTICS, 0, 0)) == -1) {
> + fprintf(stderr, "Can't access shared memory area. SHMConfig disabled?\n");
> + return 0;
> + } else {
> + fprintf(stderr, "Incorrect size of shared memory area. Incompatible driver version?\n");
> + return 0;
> + }
> + }
> + if ((synshm = (SynapticsSHM*) shmat(shmid, NULL, 0)) == NULL) {
> + perror("shmat");
> + return 0;
> + }
> + return 1;
> +}
> +
> int
> main(int argc, char *argv[])
> {
> @@ -438,7 +460,6 @@ main(int argc, char *argv[])
> int poll_delay = 200000; /* 200 ms */
> Display *display;
> int c;
> - int shmid;
> int use_xrecord = 1;
>
>
> @@ -485,20 +506,8 @@ main(int argc, char *argv[])
> exit(2);
> }
>
> - /* Connect to the shared memory area */
> - if ((shmid = shmget(SHM_SYNAPTICS, sizeof(SynapticsSHM), 0)) == -1) {
> - if ((shmid = shmget(SHM_SYNAPTICS, 0, 0)) == -1) {
> - fprintf(stderr, "Can't access shared memory area. SHMConfig disabled?\n");
> - exit(2);
> - } else {
> - fprintf(stderr, "Incorrect size of shared memory area. Incompatible driver version?\n");
> - exit(2);
> - }
> - }
> - if ((synshm = (SynapticsSHM*) shmat(shmid, NULL, 0)) == NULL) {
> - perror("shmat");
> + if (!shm_init())
> exit(2);
> - }
>
> /* Install a signal handler to restore synaptics parameters on exit */
> install_signal_handler();
ACK
Henrik
More information about the xorg-devel
mailing list