[ecore] merged svn latest code (svn54830)
[profile/ivi/ecore.git] / src / lib / ecore_x / xlib / ecore_x_damage.c
1 #ifdef HAVE_CONFIG_H
2 # include <config.h>
3 #endif /* ifdef HAVE_CONFIG_H */
4
5 #include "ecore_x_private.h"
6 #include "Ecore_X.h"
7
8 static Eina_Bool _damage_available = EINA_FALSE;
9 #ifdef ECORE_XDAMAGE
10 static int _damage_major, _damage_minor;
11 #endif /* ifdef ECORE_XDAMAGE */
12
13 void
14 _ecore_x_damage_init(void)
15 {
16 #ifdef ECORE_XDAMAGE
17    _damage_major = 1;
18    _damage_minor = 0;
19
20    LOGFN(__FILE__, __LINE__, __FUNCTION__);
21    if (XDamageQueryVersion(_ecore_x_disp, &_damage_major, &_damage_minor))
22       _damage_available = EINA_TRUE;
23    else
24       _damage_available = EINA_FALSE;
25
26 #else /* ifdef ECORE_XDAMAGE */
27    _damage_available = EINA_FALSE;
28 #endif /* ifdef ECORE_XDAMAGE */
29 } /* _ecore_x_damage_init */
30
31 EAPI Eina_Bool
32 ecore_x_damage_query(void)
33 {
34    return _damage_available;
35 } /* ecore_x_damage_query */
36
37 EAPI Ecore_X_Damage
38 ecore_x_damage_new(Ecore_X_Drawable d, Ecore_X_Damage_Report_Level level)
39 {
40 #ifdef ECORE_XDAMAGE
41    Ecore_X_Damage damage;
42
43    LOGFN(__FILE__, __LINE__, __FUNCTION__);
44    damage = XDamageCreate(_ecore_x_disp, d, level);
45    return damage;
46 #else /* ifdef ECORE_XDAMAGE */
47    return 0;
48 #endif /* ifdef ECORE_XDAMAGE */
49 } /* ecore_x_damage_new */
50
51 EAPI void
52 ecore_x_damage_free(Ecore_X_Damage damage)
53 {
54 #ifdef ECORE_XDAMAGE
55    LOGFN(__FILE__, __LINE__, __FUNCTION__);
56    XDamageDestroy(_ecore_x_disp, damage);
57 #endif /* ifdef ECORE_XDAMAGE */
58 } /* ecore_x_damage_free */
59
60 EAPI void
61 ecore_x_damage_subtract(Ecore_X_Damage damage,
62                         Ecore_X_Region repair,
63                         Ecore_X_Region parts)
64 {
65 #ifdef ECORE_XDAMAGE
66    LOGFN(__FILE__, __LINE__, __FUNCTION__);
67    XDamageSubtract(_ecore_x_disp, damage, repair, parts);
68 #endif /* ifdef ECORE_XDAMAGE */
69 } /* ecore_x_damage_subtract */
70