7 #endif /* ifdef HAVE_CONFIG_H */
10 #include "ecore_x_private.h"
12 #include "Ecore_X_Atoms.h"
14 EAPI Ecore_X_Sync_Alarm
15 ecore_x_sync_alarm_new(Ecore_X_Sync_Counter counter)
17 Ecore_X_Sync_Alarm alarm;
18 XSyncAlarmAttributes values;
21 LOGFN(__FILE__, __LINE__, __FUNCTION__);
22 XSyncIntToValue(&init, 0);
23 XSyncSetCounter(_ecore_x_disp, counter, init);
25 values.trigger.counter = counter;
26 values.trigger.value_type = XSyncAbsolute;
27 XSyncIntToValue(&values.trigger.wait_value, 1);
28 values.trigger.test_type = XSyncPositiveComparison;
30 XSyncIntToValue(&values.delta, 1);
34 alarm = XSyncCreateAlarm(_ecore_x_disp,
45 } /* ecore_x_sync_alarm_new */
48 ecore_x_sync_alarm_free(Ecore_X_Sync_Alarm alarm)
50 LOGFN(__FILE__, __LINE__, __FUNCTION__);
51 return XSyncDestroyAlarm(_ecore_x_disp, alarm);
52 } /* ecore_x_sync_alarm_free */
55 ecore_x_sync_counter_query(Ecore_X_Sync_Counter counter, unsigned int *val)
59 LOGFN(__FILE__, __LINE__, __FUNCTION__);
60 if (XSyncQueryCounter(_ecore_x_disp, counter, &value))
62 *val = (unsigned int)XSyncValueLow32(value);
67 } /* ecore_x_sync_counter_query */
69 EAPI Ecore_X_Sync_Counter
70 ecore_x_sync_counter_new(int val)
75 LOGFN(__FILE__, __LINE__, __FUNCTION__);
76 XSyncIntToValue(&v, val);
77 counter = XSyncCreateCounter(_ecore_x_disp, v);
79 } /* ecore_x_sync_counter_new */
82 ecore_x_sync_counter_free(Ecore_X_Sync_Counter counter)
84 LOGFN(__FILE__, __LINE__, __FUNCTION__);
85 XSyncDestroyCounter(_ecore_x_disp, counter);
86 } /* ecore_x_sync_counter_free */
89 ecore_x_sync_counter_inc(Ecore_X_Sync_Counter counter, int by)
93 LOGFN(__FILE__, __LINE__, __FUNCTION__);
94 XSyncIntToValue(&v, by);
95 XSyncChangeCounter(_ecore_x_disp, counter, v);
96 } /* ecore_x_sync_counter_inc */
99 ecore_x_sync_counter_val_wait(Ecore_X_Sync_Counter counter, int val)
101 XSyncWaitCondition cond;
104 LOGFN(__FILE__, __LINE__, __FUNCTION__);
105 XSyncQueryCounter(_ecore_x_disp, counter, &v);
106 XSyncIntToValue(&v, val);
107 XSyncIntToValue(&v2, val + 1);
108 cond.trigger.counter = counter;
109 cond.trigger.value_type = XSyncAbsolute;
110 cond.trigger.wait_value = v;
111 cond.trigger.test_type = XSyncPositiveComparison;
112 cond.event_threshold = v2;
113 XSyncAwait(_ecore_x_disp, &cond, 1);
114 // XSync(_ecore_x_disp, False); // dont need this
115 } /* ecore_x_sync_counter_val_wait */
118 ecore_x_sync_counter_set(Ecore_X_Sync_Counter counter, int val)
122 LOGFN(__FILE__, __LINE__, __FUNCTION__);
123 XSyncIntToValue(&v, val);
124 XSyncSetCounter(_ecore_x_disp, counter, v);
128 ecore_x_sync_counter_2_set(Ecore_X_Sync_Counter counter, int val_hi, unsigned int val_lo)
132 LOGFN(__FILE__, __LINE__, __FUNCTION__);
133 XSyncIntsToValue(&v, val_lo, val_hi);
134 XSyncSetCounter(_ecore_x_disp, counter, v);
138 ecore_x_sync_counter_2_query(Ecore_X_Sync_Counter counter, int *val_hi, unsigned int *val_lo)
142 LOGFN(__FILE__, __LINE__, __FUNCTION__);
143 if (XSyncQueryCounter(_ecore_x_disp, counter, &value))
145 *val_lo = (unsigned int)XSyncValueLow32(value);
146 *val_hi = (int)XSyncValueHigh32(value);