| 
							- // u/* -*- Mode: C++ ; c-basic-offset: 4 -*- */
 - /*
 -   JACK control API implementation
 - 
 -   Copyright (C) 2008 Nedko Arnaudov
 -   Copyright (C) 2008 Grame
 -   Copyright (C) 2013 Samsung Electronics
 - 
 -   This program is free software; you can redistribute it and/or modify
 -   it under the terms of the GNU General Public License as published by
 -   the Free Software Foundation; version 2 of the License.
 - 
 -   This program is distributed in the hope that it will be useful,
 -   but WITHOUT ANY WARRANTY; without even the implied warranty of
 -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 -   GNU General Public License for more details.
 - 
 -   You should have received a copy of the GNU General Public License
 -   along with this program; if not, write to the Free Software
 -   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 - 
 - */
 - 
 - #ifndef WIN32
 - #include <stdint.h>
 - #include <dirent.h>
 - #include <pthread.h>
 - #endif
 - 
 - #include "types.h"
 - #include <string.h>
 - #include <errno.h>
 - #include <stdio.h>
 - #include <assert.h>
 - #include <signal.h>
 - 
 - #include "JackControlAPIAndroid.h"
 - #include "JackConstants.h"
 - #include "JackServerGlobals.h"
 - 
 - using namespace Jack;
 - 
 - struct jackctl_sigmask
 - {
 -     sigset_t signals;
 - };
 - 
 - static jackctl_sigmask sigmask;
 - 
 - SERVER_EXPORT int
 - jackctl_wait_signals_and_return(jackctl_sigmask_t * sigmask)
 - {
 -     int sig;
 -     bool waiting = true;
 - 
 -     while (waiting) {
 -     #if defined(sun) && !defined(__sun__) // SUN compiler only, to check
 -         sigwait(&sigmask->signals);
 -     #else
 -         sigwait(&sigmask->signals, &sig);
 -     #endif
 -         fprintf(stderr, "Jack main caught signal %d\n", sig);
 - 
 -         switch (sig) {
 -             case SIGUSR1:
 -                 //jack_dump_configuration(engine, 1);
 -                 break;
 -             case SIGUSR2:
 -                 // driver exit
 -                 waiting = false;
 -                 break;
 -             case SIGTTOU:
 -                 break;
 -             default:
 -                 waiting = false;
 -                 break;
 -         }
 -     }
 - 
 -     if (sig != SIGSEGV) {
 -         // unblock signals so we can see them during shutdown.
 -         // this will help prod developers not to lose sight of
 -         // bugs that cause segfaults etc. during shutdown.
 -         sigprocmask(SIG_UNBLOCK, &sigmask->signals, 0);
 -     }
 - 
 -     return sig;
 - }
 
 
  |