Browse Source

On Windows version, use signal to quit the server.

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@1237 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/0.59
sletz 18 years ago
parent
commit
a04e5b8696
2 changed files with 38 additions and 9 deletions
  1. +4
    -0
      ChangeLog
  2. +34
    -9
      windows/JackdmpWIN32.cpp

+ 4
- 0
ChangeLog View File

@@ -2,6 +2,10 @@
Jackdmp changes log
---------------------------
2006-09-15 Stephane Letz <letz@grame.fr>
* On Windows version, use signal to quit the server.
2006-09-13 Stephane Letz <letz@grame.fr>
* Correct pipe destruction bug in JackWinNamedPipe class.


+ 34
- 9
windows/JackdmpWIN32.cpp View File

@@ -21,7 +21,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include <iostream>
#include <assert.h>
#include <process.h>
#include <getopt.h>
#include <getopt.h>
#include <signal.h>

#include "JackServer.h"
#include "JackConstants.h"
@@ -46,7 +47,9 @@ static int sync = 0;
static int xverbose = 0;

#define DEFAULT_TMP_DIR "/tmp"
char *jack_tmpdir = DEFAULT_TMP_DIR;
char *jack_tmpdir = DEFAULT_TMP_DIR;
HANDLE waitEvent;

void jack_print_driver_options (jack_driver_desc_t * desc, FILE *file);
void jack_print_driver_param_usage (jack_driver_desc_t * desc, unsigned long param, FILE *file);
@@ -108,6 +111,13 @@ static int JackDelete()
delete fServer;
printf("Jackdmp: delete server\n");
return 0;
}
static void intrpt(int signum)
{
printf("jack main caught signal %d\n", signum);
(void) signal(SIGINT, SIG_DFL);
SetEvent(waitEvent);
}

/*
@@ -230,7 +240,13 @@ int main(int argc, char* argv[])
int sync = 0;
int i;
int rc;
char c;
char c;
// Creates wait event
if ((waitEvent = CreateEvent(NULL, FALSE, FALSE, NULL)) == NULL) {
printf("CreateEvent fails err = %ld", GetLastError());
return 0;
}

opterr = 0;
while (!seen_driver &&
@@ -383,18 +399,27 @@ int main(int argc, char* argv[])
printf("Cannot start server... exit\n");
JackDelete();
return 0;
}

}
(void) signal(SIGINT, intrpt);
if ((res = WaitForSingleObject(waitEvent, INFINITE)) != WAIT_OBJECT_0) {
printf("WaitForSingleObject fails err = %ld", GetLastError());
}
/*
printf("Type 'q' to quit\n");

while ((c = getchar()) != 'q') {}
while ((c = getchar()) != 'q') {}
*/

JackStop();

jack_cleanup_shm();
// jack_cleanup_files(server_name);
jack_unregister_server(server_name);

jack_unregister_server(server_name);
CloseHandle(waitEvent);
return 1;
}



Loading…
Cancel
Save