summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author couriersud <couriersud@arcor.de>2015-01-10 01:12:58 +0100
committer couriersud <couriersud@arcor.de>2015-01-10 01:12:58 +0100
commitd1f0fd9fe8a52b320f71dbd89544f72e9076f541 (patch)
treeaf8748977672b6296488266d3362f5c438c66732
parentdfb34cdb00838ee0a3bdc03947ad25806127c980 (diff)
Moved OSX osd_sleep and friends to modules/lib (nw)
-rw-r--r--src/osd/modules/lib/osdlib_macosx.c124
-rw-r--r--src/osd/sdl/sdlos_macosx.c117
2 files changed, 124 insertions, 117 deletions
diff --git a/src/osd/modules/lib/osdlib_macosx.c b/src/osd/modules/lib/osdlib_macosx.c
index 7aab9eaf78c..4f3b5bd3548 100644
--- a/src/osd/modules/lib/osdlib_macosx.c
+++ b/src/osd/modules/lib/osdlib_macosx.c
@@ -6,11 +6,17 @@
#include <mach/mach.h>
#include <mach/mach_time.h>
+#include <mach/mach_traps.h>
#include <Carbon/Carbon.h>
// MAME headers
+#include "osdcore.h"
#include "osdlib.h"
+// FIXME: We shouldn't use SDL functions in here
+
+#include "sdlinc.h"
+
//============================================================
// osd_process_kill
//============================================================
@@ -102,3 +108,121 @@ int osd_setenv(const char *name, const char *value, int overwrite)
{
return setenv(name, value, overwrite);
}
+
+//============================================================
+// PROTOTYPES
+//============================================================
+
+static osd_ticks_t init_cycle_counter(void);
+static osd_ticks_t mach_cycle_counter(void);
+
+//============================================================
+// STATIC VARIABLES
+//============================================================
+
+static osd_ticks_t (*cycle_counter)(void) = init_cycle_counter;
+static osd_ticks_t (*ticks_counter)(void) = init_cycle_counter;
+static osd_ticks_t ticks_per_second;
+
+//============================================================
+// init_cycle_counter
+//
+// to avoid total grossness, this function is split by subarch
+//============================================================
+
+static osd_ticks_t init_cycle_counter(void)
+{
+ osd_ticks_t start, end;
+ osd_ticks_t a, b;
+
+ cycle_counter = mach_cycle_counter;
+ ticks_counter = mach_cycle_counter;
+
+ // wait for an edge on the timeGetTime call
+ a = SDL_GetTicks();
+ do
+ {
+ b = SDL_GetTicks();
+ } while (a == b);
+
+ // get the starting cycle count
+ start = (*cycle_counter)();
+
+ // now wait for 1/4 second total
+ do
+ {
+ a = SDL_GetTicks();
+ } while (a - b < 250);
+
+ // get the ending cycle count
+ end = (*cycle_counter)();
+
+ // compute ticks_per_sec
+ ticks_per_second = (end - start) * 4;
+
+ // return the current cycle count
+ return (*cycle_counter)();
+}
+
+//============================================================
+// performance_cycle_counter
+//============================================================
+
+//============================================================
+// mach_cycle_counter
+//============================================================
+static osd_ticks_t mach_cycle_counter(void)
+{
+ return mach_absolute_time();
+}
+
+//============================================================
+// osd_cycles
+//============================================================
+
+osd_ticks_t osd_ticks(void)
+{
+ return (*cycle_counter)();
+}
+
+
+//============================================================
+// osd_ticks_per_second
+//============================================================
+
+osd_ticks_t osd_ticks_per_second(void)
+{
+ if (ticks_per_second == 0)
+ {
+ // if we haven't computed the value yet, there's no time like the present
+ init_cycle_counter();
+ }
+ return ticks_per_second;
+}
+
+
+
+//============================================================
+// osd_sleep
+//============================================================
+
+void osd_sleep(osd_ticks_t duration)
+{
+ UINT32 msec;
+
+ // make sure we've computed ticks_per_second
+ if (ticks_per_second == 0)
+ (void)osd_ticks();
+
+ // convert to milliseconds, rounding down
+ msec = (UINT32)(duration * 1000 / ticks_per_second);
+
+ // only sleep if at least 2 full milliseconds
+ if (msec >= 2)
+ {
+ // take a couple of msecs off the top for good measure
+ msec -= 2;
+ usleep(msec*1000);
+ }
+}
+
diff --git a/src/osd/sdl/sdlos_macosx.c b/src/osd/sdl/sdlos_macosx.c
index 4a961f5f872..a6baef5f159 100644
--- a/src/osd/sdl/sdlos_macosx.c
+++ b/src/osd/sdl/sdlos_macosx.c
@@ -22,123 +22,6 @@
// MAME headers
#include "osdcore.h"
-//============================================================
-// PROTOTYPES
-//============================================================
-
-static osd_ticks_t init_cycle_counter(void);
-static osd_ticks_t mach_cycle_counter(void);
-
-//============================================================
-// STATIC VARIABLES
-//============================================================
-
-static osd_ticks_t (*cycle_counter)(void) = init_cycle_counter;
-static osd_ticks_t (*ticks_counter)(void) = init_cycle_counter;
-static osd_ticks_t ticks_per_second;
-
-//============================================================
-// init_cycle_counter
-//
-// to avoid total grossness, this function is split by subarch
-//============================================================
-
-static osd_ticks_t init_cycle_counter(void)
-{
- osd_ticks_t start, end;
- osd_ticks_t a, b;
-
- cycle_counter = mach_cycle_counter;
- ticks_counter = mach_cycle_counter;
-
- // wait for an edge on the timeGetTime call
- a = SDL_GetTicks();
- do
- {
- b = SDL_GetTicks();
- } while (a == b);
-
- // get the starting cycle count
- start = (*cycle_counter)();
-
- // now wait for 1/4 second total
- do
- {
- a = SDL_GetTicks();
- } while (a - b < 250);
-
- // get the ending cycle count
- end = (*cycle_counter)();
-
- // compute ticks_per_sec
- ticks_per_second = (end - start) * 4;
-
- // return the current cycle count
- return (*cycle_counter)();
-}
-
-//============================================================
-// performance_cycle_counter
-//============================================================
-
-//============================================================
-// mach_cycle_counter
-//============================================================
-static osd_ticks_t mach_cycle_counter(void)
-{
- return mach_absolute_time();
-}
-
-//============================================================
-// osd_cycles
-//============================================================
-
-osd_ticks_t osd_ticks(void)
-{
- return (*cycle_counter)();
-}
-
-
-//============================================================
-// osd_ticks_per_second
-//============================================================
-
-osd_ticks_t osd_ticks_per_second(void)
-{
- if (ticks_per_second == 0)
- {
- // if we haven't computed the value yet, there's no time like the present
- init_cycle_counter();
- }
- return ticks_per_second;
-}
-
-
-
-//============================================================
-// osd_sleep
-//============================================================
-
-void osd_sleep(osd_ticks_t duration)
-{
- UINT32 msec;
-
- // make sure we've computed ticks_per_second
- if (ticks_per_second == 0)
- (void)osd_ticks();
-
- // convert to milliseconds, rounding down
- msec = (UINT32)(duration * 1000 / ticks_per_second);
-
- // only sleep if at least 2 full milliseconds
- if (msec >= 2)
- {
- // take a couple of msecs off the top for good measure
- msec -= 2;
- usleep(msec*1000);
- }
-}
-
//============================================================
// osd_get_clipboard_text