#endif
if(event_handle->manual==FALSE) {
- _wapi_handle_set_signal_state (handle, FALSE, FALSE);
+ g_assert (event_handle->set_count > 0);
+
+ if (--event_handle->set_count == 0) {
+ _wapi_handle_set_signal_state (handle, FALSE, FALSE);
+ }
}
}
ret = handle;
event_handle->manual=manual;
+ event_handle->set_count = 0;
if(initial==TRUE) {
+ if (manual == FALSE) {
+ event_handle->set_count = 1;
+ }
+
_wapi_handle_set_signal_state (handle, TRUE, FALSE);
}
if(event_handle->manual==TRUE) {
_wapi_handle_set_signal_state (handle, TRUE, TRUE);
} else {
+ event_handle->set_count++;
_wapi_handle_set_signal_state (handle, TRUE, FALSE);
}
_wapi_handle_set_signal_state (handle, FALSE, FALSE);
}
+ event_handle->set_count = 0;
+
thr_ret = _wapi_handle_unlock_handle (handle);
g_assert (thr_ret == 0);
if(event_handle->manual==TRUE) {
_wapi_handle_set_signal_state (handle, TRUE, TRUE);
} else {
+ event_handle->set_count++;
_wapi_handle_set_signal_state (handle, TRUE, FALSE);
}