mir/xrandr compatibility lib
Bryce Harrington
bryce at canonical.com
Mon Apr 8 19:20:38 UTC 2013
I'm looking into making a wrapper lib for mir that provides a few basic
xrandr operations via mir. I think I understand what's needed but want
to get your sanity check before I get too far into it.
This mir/randr compatibility library ("mirandr?") will provide the
header file X11/extensions/Xrandr.h, but stripped down to only the RANDR
1.0 routines and structure definitions. That should be adequate for
applications and is a reasonably achievable subset (i.e. no multi-head
layout operations, properties, or other advanced stuff). Since
libXrandr is in C, this will need to be in C as well.
The library will provide mir implementations of these commonly needed
RANDR 1.0 calls:
XRRGetScreenInfo()
XRRSetScreenConfig()
XRRQueryVersion() // Just returns 1.0
XRRQueryExtension() // Stub; just return true
The getter call (retrieving read-only information) is the immediate
priority. The setter routine may be more involved to get right so
implementaton will be left to phase 2.
There are also a number of accessors and constructor/destructor routines
for the various structs. These are entirely local (they don't make any
server calls) so will be reused as-is.
The implementation of XRRGetScreenInfo() will essentially just set up a
mir connection, grab the display info, and reformat it into the Xrandr
structures. So, borrowing logic from the demo client, it'd look
something like:
MirConnection* connection{nullptr};
mir_wait_for(mir_connect(mir_test_socket, __PRETTY_FUNCTION__,
connection_callback, &connection));
MirDisplayInfo info;
mir_connection_get_display_info(connection, &info);
// Create XRRScreenConfiguration structure
// Copy info.width, info.height to structure
mir_connection_release(connection);
// return structure
How's this all sound so far?
Bryce
More information about the Mir-devel
mailing list