aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/ecore/src/lib/ecore_x/xcb/ecore_xcb_damage.c
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/ecore/src/lib/ecore_x/xcb/ecore_xcb_damage.c')
-rw-r--r--libraries/ecore/src/lib/ecore_x/xcb/ecore_xcb_damage.c155
1 files changed, 0 insertions, 155 deletions
diff --git a/libraries/ecore/src/lib/ecore_x/xcb/ecore_xcb_damage.c b/libraries/ecore/src/lib/ecore_x/xcb/ecore_xcb_damage.c
deleted file mode 100644
index bbab308..0000000
--- a/libraries/ecore/src/lib/ecore_x/xcb/ecore_xcb_damage.c
+++ /dev/null
@@ -1,155 +0,0 @@
1#include "ecore_xcb_private.h"
2# ifdef ECORE_XCB_DAMAGE
3# include <xcb/damage.h>
4# endif
5
6/* local variables */
7static Eina_Bool _damage_avail = EINA_FALSE;
8
9/* external variables */
10int _ecore_xcb_event_damage = -1;
11
12void
13_ecore_xcb_damage_init(void)
14{
15 LOGFN(__FILE__, __LINE__, __FUNCTION__);
16
17#ifdef ECORE_XCB_DAMAGE
18 xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_damage_id);
19#endif
20}
21
22void
23_ecore_xcb_damage_finalize(void)
24{
25#ifdef ECORE_XCB_DAMAGE
26 const xcb_query_extension_reply_t *ext_reply;
27#endif
28
29 LOGFN(__FILE__, __LINE__, __FUNCTION__);
30
31#ifdef ECORE_XCB_DAMAGE
32 ext_reply = xcb_get_extension_data(_ecore_xcb_conn, &xcb_damage_id);
33 if ((ext_reply) && (ext_reply->present))
34 {
35 xcb_damage_query_version_cookie_t cookie;
36 xcb_damage_query_version_reply_t *reply;
37
38 cookie =
39 xcb_damage_query_version_unchecked(_ecore_xcb_conn,
40 XCB_DAMAGE_MAJOR_VERSION,
41 XCB_DAMAGE_MINOR_VERSION);
42 reply = xcb_damage_query_version_reply(_ecore_xcb_conn, cookie, NULL);
43 if (reply)
44 {
45 _damage_avail = EINA_TRUE;
46 free(reply);
47 }
48
49 if (_damage_avail)
50 _ecore_xcb_event_damage = ext_reply->first_event;
51 }
52#endif
53}
54
55/**
56 * @defgroup Ecore_X_Damage_Group X Damage Extension Functions
57 *
58 * Functions related to the X Damage Extension.
59 */
60
61EAPI Eina_Bool
62ecore_x_damage_query(void)
63{
64 return _damage_avail;
65}
66
67/**
68 * Create a damage object
69 *
70 * @param drawable The drawable to monitor
71 * @param level The level of the damage report
72 * @return The damage object
73 *
74 * Creates a damage object to monitor changes to @p drawable,
75 * with the level @p level.
76 *
77 * @ingroup Ecore_X_Damage_Group
78 */
79EAPI Ecore_X_Damage
80ecore_x_damage_new(Ecore_X_Drawable drawable,
81 Ecore_X_Damage_Report_Level level)
82{
83 Ecore_X_Damage damage = 0;
84
85 LOGFN(__FILE__, __LINE__, __FUNCTION__);
86 CHECK_XCB_CONN;
87
88 if (!_damage_avail) return 0;
89
90#ifdef ECORE_XCB_DAMAGE
91 damage = xcb_generate_id(_ecore_xcb_conn);
92 xcb_damage_create(_ecore_xcb_conn, damage, drawable, level);
93// ecore_x_flush();
94#endif
95
96 return damage;
97}
98
99/**
100 * Destroy a damage object
101 *
102 * @param damage The damage object to destroy
103 *
104 * Destroys the damage object @p damage
105 *
106 * @ingroup Ecore_X_Damage_Group
107 */
108EAPI void
109ecore_x_damage_free(Ecore_X_Damage damage)
110{
111 LOGFN(__FILE__, __LINE__, __FUNCTION__);
112 CHECK_XCB_CONN;
113
114 if (!_damage_avail) return;
115
116#ifdef ECORE_XCB_DAMAGE
117 xcb_damage_destroy(_ecore_xcb_conn, damage);
118// ecore_x_flush();
119#endif
120}
121
122/**
123 * Synchronously modifies the region
124 *
125 * @param damage The damage object to destroy
126 * @param repair The repair region
127 * @param parts The parts region
128 *
129 * Synchronously modifies the regions in the following manner:
130 * If @p repair is @c XCB_NONE:
131 * 1) parts = damage
132 * 2) damage = <empty>
133 * Otherwise:
134 * 1) parts = damage INTERSECT repair
135 * 2) damage = damage - parts
136 * 3) Generate DamageNotify for remaining damage areas
137 *
138 * @ingroup Ecore_X_Damage_Group
139 */
140EAPI void
141ecore_x_damage_subtract(Ecore_X_Damage damage,
142 Ecore_X_Region repair,
143 Ecore_X_Region parts)
144{
145 LOGFN(__FILE__, __LINE__, __FUNCTION__);
146 CHECK_XCB_CONN;
147
148 if (!_damage_avail) return;
149
150#ifdef ECORE_XCB_DAMAGE
151 xcb_damage_subtract(_ecore_xcb_conn, damage, repair, parts);
152// ecore_x_flush();
153#endif
154}
155