Enrico Weigelt, metux IT consult
f2df5822b6
( !1654 ) Xnest: use xcb_window_t instead of Window
...
Since we're now using xcb for upstream X11 connection, it's cleaner to
use it's type for the window IDs.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
378009cd06
( !1654 ) Xnest: dont link Xlib anymore
...
Now that we completely ported from Xlib to XCB, we can finally stop
importing Xlib :)
FIN.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
49f1fb8831
( !1654 ) Xnest: use XCB for upstream connection
...
Now that no Xlib operations (besides opening and closing connection)
aren't used anymore, we can move over the last pieces and use XCB
instead of Xlib for connecting the upstream Xserver.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
d557777117
( !1654 ) Xnest: use XCB for event loop
...
Now that no X11 calls are being done via Xlib anymore, we're free to
also move over event receiving, leaving Xlib pretty much unused.
Also need to add a simple event queue mechanism, because we've go a
screen operation (see xnestBitBlitHelper) that needs to collect up
certain events for it's return value.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
25285a2b46
( !1654 ) Xnest: drop xnestWindowExposures micro-optimization
...
xnestWindowExposures() is a micro-optimization for the specific case that
a newly created window receives exposure events (from our upstream server)
inside the region we're already exposing on our own (miWindowExposures()):
it peeks the Xlib event queue for all expose events, checks whether their
areas are inside our exposure region and requeue's those that aren't.
Unfortunately, this depends on Xlib's internal queue mechamism, thus standing
in the way of moving to XCB (which doesn't have that).
Removing this doens't seem to make any practical difference, even with
demanding applications like GIMP. The only cost is potentially having some
initial window content painted twice, *if* the application really draws
something complicated right after creating the window.
*If* there'll really be a demand for such an optimization some day, it can
be reimplemented without any message queue: just redirecting all expose events
into recording them in a region, which is flushed out later. But for now,
there really doesn't seem to be any practical need for that.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
14a4ef45ba
( !1654 ) Xnest: replace XConnectionNumber() by xcb_get_file_descriptor()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
b1a5198666
( !1654 ) Xnest: replace XReparentWindow() by xcb_reparent_window()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
4efc1dca79
( !1654 ) Xnest: drop using XLoadQueryFont()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
9488bb3079
( !1654 ) Xnest: replace XTextWidth[16]() by own implementation
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
10340ed5c8
( !1654 ) Xnest: load fonts via xcb
...
FIXME: support xf86bigfont extension
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
8297df575c
( !1654 ) Xnest: replace XQueryBestSize() by xcb_query_best_size()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
5d4215b346
( !1654 ) Xnest: replace X(Un)InstallColormap() by xcb_(un)install_colormap()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
0cc03c0e12
( !1654 ) Xnest: drop obsolete XGetVisualInfo() call and reundant colormaps
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
def55f6037
( !1654 ) Xnest: use new lookup table for visuals and cmaps mappings
...
Use the visuals lookup table introduced by previous commit for
looking up local vs upstream visuals and their colormaps.
Replacing the the old Xlib visuals table.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
53022239a4
( !1654 ) Xnest: screen: record visuals and cmaps in separate table
...
Record the associations between host's and our visuals as well their
corresponding cmaps in a global table, which's used later for lookups.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
1a2b44f1f9
( !1654 ) Xnest: fetch visuals from XCB setup data instead of Xlib
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
5878abf9e6
( !1654 ) Xnest: screen move assigment between depths and visual assignment to own function
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
954b262407
( !1654 ) Xnest: replace XParseGeometry() by own implementation
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
83a2c7d559
( !1654 ) Xnest: replace XGetWindowAttributes() by xcb_get_geometry()
...
Use xcb function instead of Xlib, and also spare one additional
(unused) request.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
351d8d898e
( !1654 ) Xnest: collect upstream window geometry in one xRectangle struct
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
820324d5dd
( !1654 ) Xnest: replace XGetKeyboardControl() by xcb_get_keyboard_control()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
ce3b17c7eb
( !1654 ) Xnest: replace XGetPointerMapping() by xcb_get_pointer_mapping()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
61fc7d42dd
( !1654 ) Xnest: replace XGetPointerControl() by xcb_get_pointer_control()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
c4c669822a
( !1654 ) Xnest: replace XGetModifierMapping() by xcb_get_modifier_mapping()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
0144bdc76d
( !1654 ) Xnest: fetch keyboard mapping via xcb
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
793b80de39
( !1654 ) Xnest: add own copy of fixed xcb_xkb_get_kbd_by_name()
...
This is a temporary measure, until xcbproto / libxcb is fixed:
keep an own copy of the fixed xcb_xkb_get_kbd_by_name(), renamed
as xcb_xkb_get_kbd_by_name_1().
Once xcbproto/libxcb is fixed (and new xcb release is out), this
commit can be reverted.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
95bbdbac74
( !1654 ) Xnest: use xcb for retrieving keymap controls
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
1a3af1e18d
( !1654 ) Xnest: replace XSelectInput() by xcb_change_window_attributes()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
f43e3fd902
( !1654 ) Xnest: replace XSetStandardProperties() by xcb functions
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
eca1c5f23b
( !1654 ) Xnest: fetch supported pixmap formats from xcb setup data
...
There's even no need to keep our own copies, since we can ask XCB's
copy any time.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
108116b6f0
( !1654 ) Xnest: fetch allowed screen depths from xcb screen info
...
There's even no need to keep our own copies, since we can ask XCB's
copy any time.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
d592f4a0dd
( !1654 ) Xnest: Pixmap: replace XGetImage() by xcb_get_image()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
b3a3f8002d
( !1654 ) Xnest: GC: replace XGetImage() by xcb_get_image()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
3f94060c73
( !1654 ) Xnest: replace XDestroyWindow() by xnest_destroy_window()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
34f14e9d9d
( !1654 ) Xnest: replace XCreatePixmapFromBitmapData() by xcb_put_image()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
53454f07fa
( !1654 ) Xnest: replace XCreateBitmapFromData() by xcb_put_image()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
bc4f448b76
( !1654 ) Xnest: replace XDefineCursor() by xcb_change_window_attributes()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
be8cbc9ec6
( !1654 ) Xnest: replace xnestRecolorCursor() by xcb_recolor_cursor()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
3fb74747ac
( !1654 ) Xnest: replace XFreeCursor() by xcb_free_cursor()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
3868e04bac
( !1654 ) Xnest: replace XStoreColors() by xcb_store_colors()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
7ce12bff10
( !1654 ) Xnest: replace XQueryColors() by xcb_query_colors()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
5e35766bbd
( !1654 ) Xnest: replace XSetWindowColormap() by xcb_change_window_attributes()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
95d080446b
( !1654 ) Xnest: replace XSetWMColormapWindows() by xcb_icccm_set_wm_colormap_windows_checked()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
7690150271
( !1654 ) Xnest: use XIDs directly, instead of Xlib's GC
...
Now that no Xlib drawing functions used anymore, we can finally switch over
to using GC XID's directly, instead of Xlib's GC struct.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
b4198bc1da
( !1654 ) Xnest: GC: set stipple filling via xcb_change_gc
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
3311fcbcf4
( !1654 ) Xnest: replace XSetClipMask() by xcb_change_gc()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
a063708242
( !1654 ) Xnest: replace XSetClipRectangles() by xnset_set_clip_rectangles()
...
Use XCB for setting clip rectangles.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
5d835b6d6f
( !1654 ) Xnest: replace XSetDashes() by xnest_set_dashes()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
99b561a850
( !1654 ) Xnest: replace XChangeGC() by xcb_change_gc()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00
Enrico Weigelt, metux IT consult
d741d3e370
( !1654 ) Xnest: replace XChangeKeyboardControl() by xcb_change_keyboard_control()
...
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-09-13 13:36:27 +02:00