summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author therealmogminer@gmail.com <therealmogminer@gmail.com>2016-03-15 05:33:23 +0100
committer therealmogminer@gmail.com <therealmogminer@gmail.com>2016-03-15 05:33:23 +0100
commite1883e3090510d943af54ae24cee3a637e4d72a5 (patch)
treebe4594822732661aa740f69b076c7d02685a2972 /src
parentb212e5dc2ef472f3ac449377fd00c6b7b824de85 (diff)
Remove -mt, nw
Diffstat (limited to 'src')
-rw-r--r--src/emu/ui/dsplmenu.cpp1
-rw-r--r--src/osd/modules/lib/osdobj_common.cpp1
-rw-r--r--src/osd/modules/lib/osdobj_common.h2
-rw-r--r--src/osd/sdl/window.cpp67
-rw-r--r--src/osd/windows/window.cpp98
-rw-r--r--src/osd/windows/winmain.cpp1
6 files changed, 13 insertions, 157 deletions
diff --git a/src/emu/ui/dsplmenu.cpp b/src/emu/ui/dsplmenu.cpp
index ed443815b25..22cec681670 100644
--- a/src/emu/ui/dsplmenu.cpp
+++ b/src/emu/ui/dsplmenu.cpp
@@ -44,7 +44,6 @@ ui_menu_display_options::dspl_option ui_menu_display_options::m_options[] = {
{ 0, __("GLSL"), OSDOPTION_GL_GLSL },
{ 0, __("Bilinear Filtering"), OSDOPTION_FILTER },
{ 0, __("Bitmap Prescaling"), OSDOPTION_PRESCALE },
- { 0, __("Multi-Threaded Rendering"), OSDOPTION_MULTITHREADING },
{ 0, __("Window Mode"), OSDOPTION_WINDOW },
{ 0, __("Enforce Aspect Ratio"), OSDOPTION_KEEPASPECT },
{ 0, __("Start Out Maximized"), OSDOPTION_MAXIMIZE },
diff --git a/src/osd/modules/lib/osdobj_common.cpp b/src/osd/modules/lib/osdobj_common.cpp
index b8dddb8b9fa..1e067fd262e 100644
--- a/src/osd/modules/lib/osdobj_common.cpp
+++ b/src/osd/modules/lib/osdobj_common.cpp
@@ -42,7 +42,6 @@ const options_entry osd_options::s_option_entries[] =
{ OSDOPTION_WATCHDOG ";wdog", "0", OPTION_INTEGER, "force the program to terminate if no updates within specified number of seconds" },
{ nullptr, nullptr, OPTION_HEADER, "OSD PERFORMANCE OPTIONS" },
- { OSDOPTION_MULTITHREADING ";mt", "0", OPTION_BOOLEAN, "enable multithreading; this enables rendering and blitting on a separate thread" },
{ OSDOPTION_NUMPROCESSORS ";np", OSDOPTVAL_AUTO, OPTION_STRING, "number of processors; this overrides the number the system reports" },
{ OSDOPTION_BENCH, "0", OPTION_INTEGER, "benchmark for the given number of emulated seconds; implies -video none -sound none -nothrottle" },
diff --git a/src/osd/modules/lib/osdobj_common.h b/src/osd/modules/lib/osdobj_common.h
index 573a658afa1..1cfbe6dee72 100644
--- a/src/osd/modules/lib/osdobj_common.h
+++ b/src/osd/modules/lib/osdobj_common.h
@@ -37,7 +37,6 @@
#define OSDOPTION_DEBUGGER_FONT_SIZE "debugger_font_size"
#define OSDOPTION_WATCHDOG "watchdog"
-#define OSDOPTION_MULTITHREADING "multithreading"
#define OSDOPTION_NUMPROCESSORS "numprocessors"
#define OSDOPTION_BENCH "bench"
@@ -102,7 +101,6 @@ public:
int watchdog() const { return int_value(OSDOPTION_WATCHDOG); }
// performance options
- bool multithreading() const { return bool_value(OSDOPTION_MULTITHREADING); }
const char *numprocessors() const { return value(OSDOPTION_NUMPROCESSORS); }
int bench() const { return int_value(OSDOPTION_BENCH); }
diff --git a/src/osd/sdl/window.cpp b/src/osd/sdl/window.cpp
index 1ca6e9605a6..cc5b6972f6c 100644
--- a/src/osd/sdl/window.cpp
+++ b/src/osd/sdl/window.cpp
@@ -90,7 +90,6 @@ sdl_window_info *sdl_window_list;
static sdl_window_info **last_window_ptr;
// event handling
-static int multithreading_enabled;
static osd_work_queue *work_queue;
static SDL_threadID main_threadid;
@@ -145,12 +144,7 @@ static inline void execute_async(osd_work_callback callback, const worker_param
{
worker_param *wp_temp = (worker_param *) osd_malloc(sizeof(worker_param));
*wp_temp = wp;
-
- if (multithreading_enabled)
- {
- osd_work_item_queue(work_queue, callback, (void *) wp_temp, WORK_ITEM_FLAG_AUTO_RELEASE);
- } else
- callback((void *) wp_temp, 0);
+ callback((void *) wp_temp, 0);
}
static inline void execute_sync(osd_work_callback callback, const worker_param &wp)
@@ -202,28 +196,13 @@ static OSDWORK_CALLBACK(sdlwindow_thread_id)
bool sdl_osd_interface::window_init()
{
osd_printf_verbose("Enter sdlwindow_init\n");
- // determine if we are using multithreading or not
- multithreading_enabled = false;//options().multithreading();
// get the main thread ID before anything else
main_threadid = SDL_ThreadID();
- // if multithreading, create a thread to run the windows
- if (multithreading_enabled)
- {
- // create a thread to run the windows from
- work_queue = osd_work_queue_alloc(WORK_QUEUE_FLAG_IO);
- if (work_queue == nullptr)
- return false;
- osd_work_item_queue(work_queue, &sdlwindow_thread_id, nullptr, WORK_ITEM_FLAG_AUTO_RELEASE);
- sdlwindow_sync();
- }
- else
- {
- // otherwise, treat the window thread as the main thread
- //window_threadid = main_threadid;
- sdlwindow_thread_id(nullptr, 0);
- }
+ // otherwise, treat the window thread as the main thread
+ //window_threadid = main_threadid;
+ sdlwindow_thread_id(nullptr, 0);
// initialize the drawers
if (video_config.mode == VIDEO_MODE_BGFX)
@@ -304,15 +283,7 @@ bool sdl_osd_interface::window_init()
static void sdlwindow_sync(void)
{
- if (multithreading_enabled)
- {
- // Fallback
- while (!osd_work_queue_wait(work_queue, osd_ticks_per_second()*10))
- {
- osd_printf_warning("sdlwindow_sync: Sleeping...\n");
- osd_sleep(osd_ticks_per_second() / 1000 * 100);
- }
- }
+ // haha, do nothing, losers
}
@@ -370,19 +341,8 @@ void sdl_osd_interface::window_exit()
break;
}
- // if we're multithreaded, clean up the window thread
- if (multithreading_enabled)
- {
- sdlwindow_sync();
- }
-
execute_async_wait(&sdlwindow_exit_wt, wp_dummy);
- if (multithreading_enabled)
- {
- osd_work_queue_wait(work_queue, 1000000);
- osd_work_queue_free(work_queue);
- }
osd_printf_verbose("Leave sdlwindow_exit\n");
}
@@ -731,18 +691,7 @@ int sdl_window_info::window_init()
wp->set_window(this);
- // FIXME: pass error back in a different way
- if (multithreading_enabled)
- {
- osd_work_item *wi;
-
- wi = osd_work_item_queue(work_queue, &sdl_window_info::complete_create_wt, (void *) wp, 0);
- sdlwindow_sync();
- result = *((int *) (osd_work_item_result)(wi));
- osd_work_item_release(wi);
- }
- else
- result = *((int *) sdl_window_info::complete_create_wt((void *) wp, 0));
+ result = *((int *) sdl_window_info::complete_create_wt((void *) wp, 0));
// handle error conditions
if (result == 1)
@@ -796,10 +745,6 @@ void sdl_window_info::destroy()
sdl_window_info **prevptr;
ASSERT_MAIN_THREAD();
- if (multithreading_enabled)
- {
- sdlwindow_sync();
- }
//osd_event_wait(window->rendered_event, osd_ticks_per_second()*10);
diff --git a/src/osd/windows/window.cpp b/src/osd/windows/window.cpp
index 638c2eb14cb..2bb7074a8e6 100644
--- a/src/osd/windows/window.cpp
+++ b/src/osd/windows/window.cpp
@@ -101,8 +101,6 @@ static int in_background;
static int ui_temp_pause;
static int ui_temp_was_paused;
-static int multithreading_enabled;
-
static HANDLE window_thread;
static DWORD window_threadid;
@@ -158,7 +156,6 @@ static void mtlog_dump(void)
}
#else
void mtlog_add(const char *event) { }
-static void mtlog_dump(void) { }
#endif
@@ -170,11 +167,6 @@ static void mtlog_dump(void) { }
bool windows_osd_interface::window_init()
{
- size_t temp;
-
- // determine if we are using multithreading or not
- multithreading_enabled = false;//downcast<windows_options &>(machine().options()).multithreading();
-
// get the main thread ID before anything else
main_threadid = GetCurrentThreadId();
@@ -186,30 +178,8 @@ bool windows_osd_interface::window_init()
if (!ui_pause_event)
fatalerror("Failed to create pause event\n");
- // if multithreading, create a thread to run the windows
- if (multithreading_enabled)
- {
- // create an event to signal when the window thread is ready
- window_thread_ready_event = CreateEvent(nullptr, TRUE, FALSE, nullptr);
- if (!window_thread_ready_event)
- fatalerror("Failed to create window thread ready event\n");
-
- // create a thread to run the windows from
- temp = _beginthreadex(nullptr, 0, win_window_info::thread_entry, this, 0, (unsigned *)&window_threadid);
- window_thread = (HANDLE)temp;
- if (window_thread == nullptr)
- fatalerror("Failed to create window thread\n");
-
- // set the thread priority equal to the main MAME thread
- SetThreadPriority(window_thread, GetThreadPriority(GetCurrentThread()));
- }
-
- // otherwise, treat the window thread as the main thread
- else
- {
- window_thread = GetCurrentThread();
- window_threadid = main_threadid;
- }
+ window_thread = GetCurrentThread();
+ window_threadid = main_threadid;
const int fallbacks[VIDEO_MODE_COUNT] = {
-1, // NONE -> no fallback
@@ -367,15 +337,6 @@ void windows_osd_interface::window_exit()
break;
}
- // if we're multithreaded, clean up the window thread
- if (multithreading_enabled)
- {
- PostThreadMessage(window_threadid, WM_USER_SELF_TERMINATE, 0, 0);
- WaitForSingleObject(window_thread, INFINITE);
-
- mtlog_dump();
- }
-
// kill the UI pause event
if (ui_pause_event)
CloseHandle(ui_pause_event);
@@ -839,23 +800,7 @@ void win_window_info::create(running_machine &machine, int index, osd_monitor_in
// set the initial maximized state
window->m_startmaximized = options.maximize();
- // finish the window creation on the window thread
- if (multithreading_enabled)
- {
- // wait until the window thread is ready to respond to events
- WaitForSingleObject(window_thread_ready_event, INFINITE);
-
- PostThreadMessage(window_threadid, WM_USER_FINISH_CREATE_WINDOW, 0, (LPARAM)window);
- while (window->m_init_state == 0)
- {
- winwindow_process_events(machine, 0, 1); //pump the message queue
- Sleep(1);
- }
- }
- else
- {
- window->m_init_state = window->complete_create() ? -1 : 1;
- }
+ window->m_init_state = window->complete_create() ? -1 : 1;
// handle error conditions
if (window->m_init_state == -1)
@@ -956,10 +901,7 @@ void win_window_info::update()
// post a redraw request with the primitive list as a parameter
last_update_time = timeGetTime();
mtlog_add("winwindow_video_window_update: PostMessage start");
- if (multithreading_enabled)
- PostMessage(m_hwnd, WM_USER_REDRAW, 0, (LPARAM)primlist);
- else
- SendMessage(m_hwnd, WM_USER_REDRAW, 0, (LPARAM)primlist);
+ SendMessage(m_hwnd, WM_USER_REDRAW, 0, (LPARAM)primlist);
mtlog_add("winwindow_video_window_update: PostMessage end");
}
}
@@ -1115,21 +1057,7 @@ void winwindow_ui_pause_from_main_thread(running_machine &machine, int pause)
void winwindow_ui_pause_from_window_thread(running_machine &machine, int pause)
{
assert(GetCurrentThreadId() == window_threadid);
-
- // if we're multithreaded, we have to request a pause on the main thread
- if (multithreading_enabled)
- {
- // request a pause from the main thread
- PostThreadMessage(main_threadid, WM_USER_UI_TEMP_PAUSE, pause, 0);
-
- // if we're pausing, block until it happens
- if (pause)
- WaitForSingleObject(ui_pause_event, INFINITE);
- }
-
- // otherwise, we just do it directly
- else
- winwindow_ui_pause_from_main_thread(machine, pause);
+ winwindow_ui_pause_from_main_thread(machine, pause);
}
@@ -1143,16 +1071,7 @@ void winwindow_ui_exec_on_main_thread(void (*func)(void *), void *param)
{
assert(GetCurrentThreadId() == window_threadid);
- // if we're multithreaded, we have to request a pause on the main thread
- if (multithreading_enabled)
- {
- // request a pause from the main thread
- PostThreadMessage(main_threadid, WM_USER_EXEC_FUNC, (WPARAM) func, (LPARAM) param);
- }
-
- // otherwise, we just do it directly
- else
- (*func)(param);
+ (*func)(param);
}
@@ -1551,10 +1470,7 @@ LRESULT CALLBACK win_window_info::video_window_proc(HWND wnd, UINT message, WPAR
// close: cause MAME to exit
case WM_CLOSE:
- if (multithreading_enabled)
- PostThreadMessage(main_threadid, WM_QUIT, 0, 0);
- else
- window->machine().schedule_exit();
+ window->machine().schedule_exit();
break;
// destroy: clean up all attached rendering bits and nullptr out our hwnd
diff --git a/src/osd/windows/winmain.cpp b/src/osd/windows/winmain.cpp
index cc413d79da0..97650ba076d 100644
--- a/src/osd/windows/winmain.cpp
+++ b/src/osd/windows/winmain.cpp
@@ -562,7 +562,6 @@ void windows_osd_interface::init(running_machine &machine)
if (profile > 0)
{
options.set_value(OPTION_THROTTLE, false, OPTION_PRIORITY_MAXIMUM, error_string);
- options.set_value(OSDOPTION_MULTITHREADING, false, OPTION_PRIORITY_MAXIMUM, error_string);
options.set_value(OSDOPTION_NUMPROCESSORS, 1, OPTION_PRIORITY_MAXIMUM, error_string);
assert(error_string.empty());
}