DirectFB UI: needs thread control
g-reno opened this issue · comments
g-reno commented
DirectFB UI does not have any semaphore thread control like there is in the X UI.
g-reno commented
Here is a patch that adds thread control to the DirectFB UI:
<script> #include #include +#include +#include #include #include #include "dfbfreerdp.h" @@ -647,6 +649,7 @@ run_dfbfreerdp(rdpSet * settings, rdpChanMan * chan_man) return 0; } +static sem_t g_sem; static int g_thread_count = 0; struct thread_data @@ -670,6 +673,10 @@ thread_func(void * arg) pthread_detach(pthread_self()); g_thread_count--; + if (g_thread_count < 1) + { + freerdp_sem_signal(&g_sem); + } return NULL; } @@ -694,6 +701,8 @@ main(int argc, char ** argv) dfb_init(&argc, &argv); dfb_kb_init(); + freerdp_sem_create(&g_sem, 0); + while (1) { data = (struct thread_data *) malloc(sizeof(struct thread_data)); @@ -718,7 +727,9 @@ main(int argc, char ** argv) while (g_thread_count > 0) { - sleep(1); + DEBUG("main thread, waiting for all threads to exit"); + freerdp_sem_wait(&g_sem); + DEBUG("main thread, all threads did exit"); } freerdp_chanman_uninit(); ============================]]></script>
g-reno commented
FreeRDP/FreeRDP#40 Patch merged in this pull-request issue.