EAPI void ecore_x_sync_counter_val_wait(Ecore_X_Sync_Counter counter, int val) { XSyncWaitCondition cond; XSyncValue v, v2; LOGFN(__FILE__, __LINE__, __FUNCTION__); XSyncQueryCounter(_ecore_x_disp, counter, &v); XSyncIntToValue(&v, val); XSyncIntToValue(&v2, val + 1); cond.trigger.counter = counter; cond.trigger.value_type = XSyncAbsolute; cond.trigger.wait_value = v; cond.trigger.test_type = XSyncPositiveComparison; cond.event_threshold = v2; XSyncAwait(_ecore_x_disp, &cond, 1); // XSync(_ecore_x_disp, False); // dont need this } /* ecore_x_sync_counter_val_wait */
int main (void) { { Display *display = XOpenDisplay(NULL); if (! display) { abort (); } int major = 3; int minor = 1; XSyncInitialize(display, &major, &minor); XSyncValue value; XSyncIntToValue(&value, 0); XSyncCounter counter = XSyncCreateCounter(display, value); static XSyncWaitCondition wait_list[1]; XSyncIntToValue(&value, 123); wait_list[0].trigger.counter = counter; wait_list[0].trigger.value_type = XSyncAbsolute; wait_list[0].trigger.wait_value = value; wait_list[0].trigger.test_type = XSyncPositiveTransition; printf ("XSyncAwait call\n"); XSyncAwait(display, wait_list, 1); printf ("XSyncAwait return\n"); printf ("XSync call\n"); XSync(display, 0); printf ("XSync return\n"); return 0; } { Display *display = XOpenDisplay (NULL); if (! display) { abort (); } int major = 3; int minor = 1; XSyncInitialize(display, &major, &minor); XSyncValue value; XSyncIntToValue(&value, 0); XSyncCounter counter = XSyncCreateCounter(display, value); static XSyncWaitCondition wait_list[1]; XSyncIntToValue(&value, 123); wait_list[0].trigger.counter = counter; wait_list[0].trigger.value_type = XSyncAbsolute; wait_list[0].trigger.wait_value = value; wait_list[0].trigger.test_type = XSyncPositiveTransition; printf ("XSyncAwait call\n"); XSyncAwait(display, wait_list, 1); printf ("XSyncAwait return\n"); printf ("XSync call\n"); XSync(display, 0); printf ("XSync return\n"); return 0; } }