3507ce25cd54834e3e42e97aadfe2ca36f1134a6
[framework/uifw/ecore.git] / src / lib / ecore_x / xlib / ecore_x_damage.c
1 /*
2  * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
3  */
4
5 #include "ecore_x_private.h"
6 #include "Ecore_X.h"
7
8 static int _damage_available;
9 #ifdef ECORE_XDAMAGE
10 static int _damage_major, _damage_minor;
11 #endif
12
13 void
14 _ecore_x_damage_init(void)
15 {
16 #ifdef ECORE_XDAMAGE
17    _damage_major = 1;
18    _damage_minor = 0;
19
20    if (XDamageQueryVersion(_ecore_x_disp, &_damage_major, &_damage_minor))
21      _damage_available = 1;
22    else
23      _damage_available = 0;
24 #else
25    _damage_available = 0;
26 #endif
27 }
28
29 EAPI int
30 ecore_x_damage_query(void)
31 {
32    return _damage_available;
33 }
34
35 EAPI Ecore_X_Damage
36 ecore_x_damage_new(Ecore_X_Drawable d, Ecore_X_Damage_Report_Level level)
37 {
38 #ifdef ECORE_XDAMAGE
39    Ecore_X_Damage damage;
40
41    damage = XDamageCreate(_ecore_x_disp, d, level);
42    return damage;
43 #else
44    return 0;
45 #endif
46 }
47
48 EAPI void
49 ecore_x_damage_del(Ecore_X_Damage damage)
50 {
51 #ifdef ECORE_XDAMAGE
52    XDamageDestroy(_ecore_x_disp, damage);
53 #endif
54 }
55
56 EAPI void
57 ecore_x_damage_subtract(Ecore_X_Damage damage, Ecore_X_Region repair, Ecore_X_Region parts)
58 {
59 #ifdef ECORE_XDAMAGE
60    XDamageSubtract(_ecore_x_disp, damage, repair, parts);
61 #endif
62 }
63