From b53bb2c6acce9ab44b48d18c76a9059261e97548 Mon Sep 17 00:00:00 2001 From: "R. Belmont" Date: Wed, 13 Jan 2010 04:01:20 +0000 Subject: SDLMAME initial import [R. Belmont, Couriersud] --- src/osd/sdl/output.c | 141 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 src/osd/sdl/output.c (limited to 'src/osd/sdl/output.c') diff --git a/src/osd/sdl/output.c b/src/osd/sdl/output.c new file mode 100644 index 00000000000..c33b88cb1a7 --- /dev/null +++ b/src/osd/sdl/output.c @@ -0,0 +1,141 @@ +//============================================================ +// +// output.c - Generic implementation of MAME output routines +// +// Copyright Nicola Salmoria and the MAME Team. +// Visit http://mamedev.org for licensing and usage restrictions. +// +//============================================================ + +#if !defined(SDLMAME_WIN32) + +#include +#include +#include + +// MAME headers +#include "emu.h" + +// MAMEOS headers +#include "output.h" + + + +//============================================================ +// CONSTANTS +//============================================================ + +#define SDLMAME_OUTPUT "/tmp/sdlmame_out" + +/* + * Using long/int should be sufficient on all + * architectures. + */ + + +#ifdef PTR64 +#define PID_FMT "%ld" +#define PID_CAST long +#else +#define PID_FMT "%d" +#define PID_CAST int +#endif + +//============================================================ +// TYPEDEFS +//============================================================ + +//============================================================ +// PRIVATE VARIABLES +//============================================================ + +static FILE *output; + +//============================================================ +// FUNCTION PROTOTYPES +//============================================================ + +static void sdloutput_exit(running_machine *machine); +static void notifier_callback(const char *outname, INT32 value, void *param); + +//============================================================ +// osd_get_pid +//============================================================ + +PID_CAST osd_getpid(void) +{ + return (PID_CAST) getpid(); +} + +//============================================================ +// sdloutput_init +//============================================================ + +void sdloutput_init(running_machine *machine) +{ + int fildes; + + add_exit_callback(machine, sdloutput_exit); + + fildes = open(SDLMAME_OUTPUT, O_RDWR | O_NONBLOCK); + + if (fildes < 0) + { + output = NULL; + mame_printf_verbose("ouput: unable to open output notifier file %s\n", SDLMAME_OUTPUT); + } + else + { + output = fdopen(fildes, "w"); + + mame_printf_verbose("ouput: opened output notifier file %s\n", SDLMAME_OUTPUT); + fprintf(output, "MAME " PID_FMT " START %s\n", osd_getpid(), machine->gamedrv->name); + fflush(output); + } + + output_set_notifier(NULL, notifier_callback, NULL); +} + + +//============================================================ +// winoutput_exit +//============================================================ + +static void sdloutput_exit(running_machine *machine) +{ + if (output != NULL) + { + fprintf(output, "MAME " PID_FMT " STOP %s\n", osd_getpid(), machine->gamedrv->name); + fflush(output); + fclose(output); + output = NULL; + mame_printf_verbose("ouput: closed output notifier file\n"); + } +} + +//============================================================ +// notifier_callback +//============================================================ + +static void notifier_callback(const char *outname, INT32 value, void *param) +{ + if (output != NULL) + { + fprintf(output, "OUT " PID_FMT " %s %d\n", osd_getpid(), outname, value); + fflush(output); + } +} + +#else /* SDLMAME_WIN32 */ + +#include "emu.h" + +//============================================================ +// Stub for win32 +//============================================================ + +void sdloutput_init(running_machine *machine) +{ +} + +#endif /* SDLMAME_WIN32 */ -- cgit v1.2.3-70-g09d2