resource_pool::~resource_pool() { clear(); if (m_listlock != NULL) osd_lock_free(m_listlock); delete[] m_hash; }
static void winwindow_video_window_destroy(win_window_info *window) { win_window_info **prevptr; assert(GetCurrentThreadId() == main_threadid); // remove us from the list for (prevptr = &win_window_list; *prevptr != NULL; prevptr = &(*prevptr)->next) if (*prevptr == window) { *prevptr = window->next; break; } // destroy the window if (window->hwnd != NULL) SendMessage(window->hwnd, WM_USER_SELF_TERMINATE, 0, 0); // free the render target if (window->target != NULL) render_target_free(window->target); // free the lock osd_lock_free(window->render_lock); // free the window itself free(window); }
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); // remove us from the list for (prevptr = &sdl_window_list; *prevptr != NULL; prevptr = &(*prevptr)->m_next) if (*prevptr == this) { *prevptr = this->m_next; break; } // free the textures etc execute_async_wait(&sdlwindow_video_window_destroy_wt, worker_param(this)); // free the render target, after the textures! this->machine().render().target_free(m_target); // free the event osd_event_free(m_rendered_event); // free the lock osd_lock_free(this->m_render_lock); }
void osd_scalable_lock_free(osd_scalable_lock *lock) { #ifdef WIN32 DeleteCriticalSection(&lock->critsect); #else osd_lock_free(lock->lock); #endif free(lock); }
void osd_scalable_lock_free(osd_scalable_lock *lock) { osd_lock_free(lock->lock); free(lock); }
resource_pool::~resource_pool() { clear(); if (m_listlock != NULL) osd_lock_free(m_listlock); }