58 xcb_connection_t * m_pconnection;
59 pointer_array < event_listener > m_happeninglistenera;
60 pointer_array < micro::interchange > m_windowa;
61 xcb_window_t m_windowActive;
63 xcb_depth_t * m_pdepth;
64 xcb_visualtype_t * m_pvisualtype;
65 xcb_screen_t * m_pscreen;
66 xcb_colormap_t m_colormap;
67 xcb_window_t m_windowRoot;
68 xcb_window_t m_windowHelper;
69 xcb_atom_t m_atoma[::x11::e_atom_count];
71 acme::malloc < xcb_render_query_pict_formats_reply_t * > m_prender_query_pict_formats_reply2;
72 visual_pictformat_map m_mapVisualPictFormat;
73 visual_depth_map m_mapVisualDepth;
75 pictformat_info_map m_mapFormatInfo;
84 static display * get();
87 virtual xcb_atom_t intern_atom(const ::scoped_string & scopedstrAtomName,
bool bCreate =
true);
88 virtual xcb_atom_t intern_atom(::x11::enum_atom eatom,
bool bCreate =
true);
91 virtual long _window_get_long_property(xcb_window_t
window, xcb_atom_t property, xcb_atom_t type);
92 virtual ::e_status _change_window_property(xcb_window_t
window, xcb_atom_t property, xcb_atom_t type, ::i32 mode, ::i32 format, ::i32 nelements,
const void * data);
96 virtual xcb_window_t _get_active_window();
105 static display * get(::particle * pparticle,
bool bBranch =
true,
void * pX11Display =
nullptr,
void * pXcbConnection =
nullptr);
107 bool message_loop_step();
110 void init_task()
override;
115 bool is_branch_current()
const override;
119 void add_window(micro::interchange * pwindow);
122 void erase_window(micro::interchange * pwindow);
124 bool _on_event(xcb_generic_event_t * pevent)
override;
126 virtual bool xcb_event(xcb_generic_event_t * pevent);
128 virtual bool xcb_posted();
135 virtual ::e_status _request_check(xcb_void_cookie_t cookie);
138 ::e_status _send_client_event(xcb_window_t window1, xcb_window_t window2, xcb_atom_t
atom, ::u32 numArgs, ...);
140 ::e_status _send_client_event_v(xcb_window_t window1, xcb_window_t window2, xcb_atom_t
atom, ::u32 numArgs, va_list argList);
143 virtual ::e_status _set_active_window(xcb_window_t
window);
146 virtual ::e_status _map_window(xcb_window_t
window);
147 virtual ::e_status _unmap_window(xcb_window_t
window);
148 virtual ::e_status _raise_window(xcb_window_t
window);
149 virtual ::e_status _lower_window(xcb_window_t
window);
152 virtual comparable_array < xcb_atom_t > _list_atom(xcb_window_t
window, xcb_atom_t atomList);
153 virtual bool _has_net_wm_state(xcb_window_t
window, xcb_atom_t propertyItem);
154 virtual bool _list_has_atom(xcb_window_t
window, xcb_atom_t propertyList, xcb_atom_t propertyItem);
155 virtual ::e_status _list_add_atom(xcb_window_t
window, xcb_atom_t atomList, xcb_atom_t atomFlag);
156 virtual ::e_status _list_erase_atom(xcb_window_t
window, xcb_atom_t atomList, xcb_atom_t atomFlag);
170 virtual ::e_status _erase_net_wm_state(xcb_window_t
window, ::x11::enum_atom eatomNetWmState);
171 virtual ::e_status _mapped_erase_net_wm_state(xcb_window_t
window, ::x11::enum_atom eatomNetWmState);
172 virtual ::e_status _unmapped_erase_net_wm_state(xcb_window_t
window, ::x11::enum_atom eatomNetWmState);
176 virtual ::e_status _destroy_window(xcb_window_t
window);
179 virtual ::e_status _move_window(xcb_window_t
window, ::i32 x, ::i32 y);
182 virtual ::e_status _set_mouse_capture(xcb_window_t
window);
183 virtual ::e_status _release_mouse_capture();
186 virtual ::e_status _get_window_attributes(xcb_get_window_attributes_reply_t * pattributes, xcb_window_t
window);
187 virtual ::e_status _get_window_geometry(xcb_get_geometry_reply_t * pgeometry, xcb_window_t
window);
193 void kick_idle()
override;
196 ::i32_size get_main_screen_size()
override;