failed_update:
_tdm_display_unload_module(private_display);
failed_load:
+ tdm_event_loop_stop(private_display);
tdm_event_loop_deinit(private_display);
failed_event:
_pthread_mutex_unlock(&private_display->lock);
* things because it's finalized.
*/
_pthread_mutex_lock(&private_display->lock);
- tdm_event_loop_deinit(private_display);
- _pthread_mutex_unlock(&private_display->lock);
-
+ tdm_event_loop_stop(private_display);
_tdm_display_destroy_private_display(private_display);
_tdm_display_unload_module(private_display);
+ _pthread_mutex_unlock(&private_display->lock);
+
+ tdm_event_loop_deinit(private_display);
#ifdef INIT_BUFMGR
if (private_display->bufmgr)
if (!private_display->private_loop)
return;
- /* after tdm_thread_deinit, we don't worry about thread things because it's finalized */
- tdm_thread_deinit(private_display->private_loop);
+ if (tdm_thread_is_running())
+ TDM_ERR("thread is still running. tdm_event_loop_stop SHOULD be called");
+
tdm_server_deinit(private_display->private_loop);
if (private_display->private_loop->backend_source)
}
INTERN void
+tdm_event_loop_stop(tdm_private_display *private_display)
+{
+ TDM_RETURN_IF_FAIL(TDM_MUTEX_IS_LOCKED());
+
+ /* after tdm_thread_deinit, we don't worry about thread things because it's finalized */
+ tdm_thread_deinit(private_display->private_loop);
+}
+
+INTERN void
tdm_event_loop_create_backend_source(tdm_private_display *private_display)
{
tdm_private_loop *private_loop = private_display->private_loop;
void
tdm_event_loop_deinit(tdm_private_display *private_display);
void
+tdm_event_loop_stop(tdm_private_display *private_display);
+void
tdm_event_loop_create_backend_source(tdm_private_display *private_display);
int
tdm_event_loop_get_fd(tdm_private_display *private_display);