svn update: 48958 (latest:48959)
[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 #ifdef HAVE_CONFIG_H
6 # include <config.h>
7 #endif
8
9
10 #include "ecore_x_private.h"
11 #include "Ecore_X.h"
12
13 static int _damage_available;
14 #ifdef ECORE_XDAMAGE
15 static int _damage_major, _damage_minor;
16 #endif
17
18 void
19 _ecore_x_damage_init(void)
20 {
21 #ifdef ECORE_XDAMAGE
22    _damage_major = 1;
23    _damage_minor = 0;
24
25    LOGFN(__FILE__, __LINE__, __FUNCTION__);
26    if (XDamageQueryVersion(_ecore_x_disp, &_damage_major, &_damage_minor))
27      _damage_available = 1;
28    else
29      _damage_available = 0;
30 #else
31    _damage_available = 0;
32 #endif
33 }
34
35 EAPI int
36 ecore_x_damage_query(void)
37 {
38    return _damage_available;
39 }
40
41 EAPI Ecore_X_Damage
42 ecore_x_damage_new(Ecore_X_Drawable d, Ecore_X_Damage_Report_Level level)
43 {
44 #ifdef ECORE_XDAMAGE
45    Ecore_X_Damage damage;
46
47    LOGFN(__FILE__, __LINE__, __FUNCTION__);
48    damage = XDamageCreate(_ecore_x_disp, d, level);
49    return damage;
50 #else
51    return 0;
52 #endif
53 }
54
55 EAPI void
56 ecore_x_damage_free(Ecore_X_Damage damage)
57 {
58 #ifdef ECORE_XDAMAGE
59    LOGFN(__FILE__, __LINE__, __FUNCTION__);
60    XDamageDestroy(_ecore_x_disp, damage);
61 #endif
62 }
63
64 EAPI void
65 ecore_x_damage_subtract(Ecore_X_Damage damage, Ecore_X_Region repair, Ecore_X_Region parts)
66 {
67 #ifdef ECORE_XDAMAGE
68    LOGFN(__FILE__, __LINE__, __FUNCTION__);
69    XDamageSubtract(_ecore_x_disp, damage, repair, parts);
70 #endif
71 }
72