static void * thread_func(void * arg) { cliprdrPlugin * plugin; struct wait_obj * listobj[2]; int numobj; plugin = (cliprdrPlugin *) arg; plugin->thread_status = 1; LLOGLN(10, ("cliprdr_main thread_func: in")); while (1) { listobj[0] = plugin->term_event; listobj[1] = plugin->data_in_event; numobj = 2; wait_obj_select(listobj, numobj, NULL, 0, 500); if (wait_obj_is_set(plugin->term_event)) { break; } if (wait_obj_is_set(plugin->data_in_event)) { wait_obj_clear(plugin->data_in_event); /* process data in */ thread_process_data_in(plugin); } } LLOGLN(10, ("cliprdr_main thread_func: out")); plugin->thread_status = -1; return 0; }
static void * thread_func(void * arg) { rdpsndPlugin * plugin; struct wait_obj * listobj[2]; int numobj; int timeout; plugin = (rdpsndPlugin *) arg; plugin->thread_status = 1; LLOGLN(10, ("thread_func: in")); while (1) { listobj[0] = plugin->term_event; listobj[1] = plugin->data_in_event; numobj = 2; timeout = plugin->out_list_head == 0 ? -1 : 500; wait_obj_select(listobj, numobj, NULL, 0, timeout); if (wait_obj_is_set(plugin->term_event)) { break; } if (wait_obj_is_set(plugin->data_in_event)) { wait_obj_clear(plugin->data_in_event); /* process data in */ thread_process_data_in(plugin); } if (plugin->out_list_head != 0) { thread_process_data_out(plugin); } } LLOGLN(10, ("thread_func: out")); plugin->thread_status = -1; return 0; }