summaryrefslogtreecommitdiff
path: root/randr.c
diff options
context:
space:
mode:
Diffstat (limited to 'randr.c')
-rw-r--r--randr.c814
1 files changed, 814 insertions, 0 deletions
diff --git a/randr.c b/randr.c
new file mode 100644
index 0000000..7f2434c
--- /dev/null
+++ b/randr.c
@@ -0,0 +1,814 @@
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <wayland-client.h>
+
+#include <X11/Xproto.h>
+#include <X11/Xatom.h>
+#include <X11/Xlib.h>
+#include <X11/extensions/Xrandr.h>
+
+
+#include "private.h"
+
+struct csx_randr {
+ struct csx_extension extension;
+};
+
+int
+csx_display_add_randr(struct csx_display *display)
+{
+ struct csx_randr *randr;
+
+ randr = malloc(sizeof *randr);
+ if (randr == NULL)
+ return -1;
+
+ csx_display_add_extension(display, &randr->extension,
+ RANDR_NAME,
+ RRNumberEvents,
+ RRNumberErrors);
+ display->randr = randr;
+
+ return 0;
+}
+
+WL_EXPORT Bool
+XRRQueryExtension(Display *xdisplay,
+ int *event_base_return,
+ int *error_base_return)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ *event_base_return = randr->extension.first_event;
+ *error_base_return = randr->extension.first_error;
+
+ return True;
+}
+
+WL_EXPORT Status
+XRRQueryVersion(Display *xdisplay,
+ int *major_version_return,
+ int *minor_version_return)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ *major_version_return = 1;
+ *minor_version_return = 4;
+
+ return True;
+}
+
+WL_EXPORT XRRScreenConfiguration *
+XRRGetScreenInfo(Display *xdisplay, Window window)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT void
+XRRFreeScreenConfigInfo(XRRScreenConfiguration *config)
+{
+ STUB();
+}
+
+WL_EXPORT Status
+XRRSetScreenConfig(Display *xdisplay,
+ XRRScreenConfiguration *config,
+ Drawable draw,
+ int size_index,
+ Rotation rotation,
+ Time timestamp)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return 0;
+}
+
+/* added in v1.1, sorry for the lame name */
+WL_EXPORT Status
+XRRSetScreenConfigAndRate(Display *xdisplay,
+ XRRScreenConfiguration *config,
+ Drawable draw,
+ int size_index,
+ Rotation rotation,
+ short rate,
+ Time timestamp)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return 0;
+}
+
+WL_EXPORT Rotation
+XRRConfigRotations(XRRScreenConfiguration *config, Rotation *current_rotation)
+{
+ STUB();
+
+ return 0;
+}
+
+WL_EXPORT Time
+XRRConfigTimes(XRRScreenConfiguration *config, Time *config_timestamp)
+{
+ STUB();
+
+ return 0;
+}
+
+WL_EXPORT XRRScreenSize *
+XRRConfigSizes(XRRScreenConfiguration *config, int *nsizes)
+{
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT short *
+XRRConfigRates(XRRScreenConfiguration *config, int sizeID, int *nrates)
+{
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT SizeID
+XRRConfigCurrentConfiguration(XRRScreenConfiguration *config,
+ Rotation *rotation)
+{
+ STUB();
+
+ return 0;
+}
+
+WL_EXPORT short
+XRRConfigCurrentRate(XRRScreenConfiguration *config)
+{
+ STUB();
+
+ return 0;
+}
+
+WL_EXPORT int
+XRRRootToScreen(Display *xdisplay, Window root)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return 0;
+}
+
+WL_EXPORT void
+XRRSelectInput(Display *xdisplay, Window window, int mask)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+}
+
+WL_EXPORT Rotation
+XRRRotations(Display *xdisplay, int screen, Rotation *current_rotation)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return 0;
+}
+
+WL_EXPORT XRRScreenSize *
+XRRSizes(Display *xdisplay, int screen, int *nsizes)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT short *
+XRRRates(Display *xdisplay, int screen, int sizeID, int *nrates)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT Time
+XRRTimes(Display *xdisplay, int screen, Time *config_timestamp)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return 0;
+}
+
+WL_EXPORT Status
+XRRGetScreenSizeRange(Display *xdisplay, Window window,
+ int *minWidth, int *minHeight,
+ int *maxWidth, int *maxHeight)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return 0;
+}
+
+WL_EXPORT void
+XRRSetScreenSize(Display *xdisplay, Window window,
+ int width, int height,
+ int mmWidth, int mmHeight)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+}
+
+WL_EXPORT XRRScreenResources *
+XRRGetScreenResources(Display *xdisplay, Window window)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT void
+XRRFreeScreenResources(XRRScreenResources *resources)
+{
+ STUB();
+}
+
+WL_EXPORT XRROutputInfo *
+XRRGetOutputInfo(Display *xdisplay, XRRScreenResources *resources, RROutput output)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT void
+XRRFreeOutputInfo(XRROutputInfo *outputInfo)
+{
+ STUB();
+}
+
+WL_EXPORT Atom *
+XRRListOutputProperties(Display *xdisplay, RROutput output, int *nprop)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT XRRPropertyInfo *
+XRRQueryOutputProperty(Display *xdisplay, RROutput output, Atom property)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT void
+XRRConfigureOutputProperty(Display *xdisplay, RROutput output, Atom property,
+ Bool pending, Bool range, int num_values,
+ long *values)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+}
+
+WL_EXPORT void
+XRRChangeOutputProperty(Display *xdisplay, RROutput output,
+ Atom property, Atom type,
+ int format, int mode,
+ _Xconst unsigned char *data, int nelements)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+}
+
+WL_EXPORT void
+XRRDeleteOutputProperty(Display *xdisplay, RROutput output, Atom property)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+}
+
+WL_EXPORT int
+XRRGetOutputProperty(Display *xdisplay, RROutput output,
+ Atom property, long offset, long length,
+ Bool _delete, Bool pending, Atom req_type,
+ Atom *actual_type, int *actual_format,
+ unsigned long *nitems, unsigned long *bytes_after,
+ unsigned char **prop)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return 0;
+}
+
+WL_EXPORT XRRModeInfo *
+XRRAllocModeInfo(_Xconst char *name, int nameLength)
+{
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT RRMode
+XRRCreateMode(Display *xdisplay, Window window, XRRModeInfo *modeInfo)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return 0;
+}
+
+WL_EXPORT void
+XRRDestroyMode(Display *xdisplay, RRMode mode)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+}
+
+WL_EXPORT void
+XRRAddOutputMode(Display *xdisplay, RROutput output, RRMode mode)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+}
+
+WL_EXPORT void
+XRRDeleteOutputMode(Display *xdisplay, RROutput output, RRMode mode)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+}
+
+WL_EXPORT void
+XRRFreeModeInfo(XRRModeInfo *modeInfo)
+{
+ STUB();
+}
+
+WL_EXPORT XRRCrtcInfo *
+XRRGetCrtcInfo(Display *xdisplay, XRRScreenResources *resources, RRCrtc crtc)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT void
+XRRFreeCrtcInfo(XRRCrtcInfo *crtcInfo)
+{
+ STUB();
+}
+
+WL_EXPORT Status
+XRRSetCrtcConfig(Display *xdisplay,
+ XRRScreenResources *resources,
+ RRCrtc crtc,
+ Time timestamp,
+ int x, int y,
+ RRMode mode,
+ Rotation rotation,
+ RROutput *outputs,
+ int noutputs)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return 0;
+}
+
+WL_EXPORT int
+XRRGetCrtcGammaSize(Display *xdisplay, RRCrtc crtc)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return 0;
+}
+
+WL_EXPORT XRRCrtcGamma *
+XRRGetCrtcGamma(Display *xdisplay, RRCrtc crtc)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT XRRCrtcGamma *
+XRRAllocGamma(int size)
+{
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT void
+XRRSetCrtcGamma(Display *xdisplay, RRCrtc crtc, XRRCrtcGamma *gamma)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+}
+
+WL_EXPORT void
+XRRFreeGamma(XRRCrtcGamma *gamma)
+{
+ STUB();
+}
+
+WL_EXPORT XRRScreenResources *
+XRRGetScreenResourcesCurrent(Display *xdisplay, Window window)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT void
+XRRSetCrtcTransform(Display *xdisplay,
+ RRCrtc crtc,
+ XTransform *transform,
+ _Xconst char *filter,
+ XFixed *params,
+ int nparams)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+}
+
+/*
+ * Get current crtc transforms and filters.
+ * Pass *attributes to XFree to free
+ */
+WL_EXPORT Status
+XRRGetCrtcTransform(Display *xdisplay,
+ RRCrtc crtc,
+ XRRCrtcTransformAttributes **attributes)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return 0;
+}
+
+/*
+ * intended to take RRScreenChangeNotify, or
+ * ConfigureNotify (on the root window)
+ * returns 1 if it is an event type it understands, 0 if not
+WL_EXPORT */
+int XRRUpdateConfiguration(XEvent *event)
+{
+ STUB();
+
+ return 0;
+}
+
+WL_EXPORT XRRPanning *
+XRRGetPanning(Display *xdisplay, XRRScreenResources *resources, RRCrtc crtc)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT void
+XRRFreePanning(XRRPanning *panning)
+{
+ STUB();
+}
+
+WL_EXPORT Status
+XRRSetPanning(Display *xdisplay,
+ XRRScreenResources *resources,
+ RRCrtc crtc,
+ XRRPanning *panning)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return 0;
+}
+
+WL_EXPORT void
+XRRSetOutputPrimary(Display *xdisplay,
+ Window window,
+ RROutput output)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+}
+
+WL_EXPORT RROutput
+XRRGetOutputPrimary(Display *xdisplay,
+ Window window)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return 0;
+}
+
+WL_EXPORT XRRProviderResources *
+XRRGetProviderResources(Display *xdisplay, Window window)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT void
+XRRFreeProviderResources(XRRProviderResources *resources)
+{
+ STUB();
+}
+
+WL_EXPORT XRRProviderInfo *
+XRRGetProviderInfo(Display *xdisplay, XRRScreenResources *resources, RRProvider provider)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT void
+XRRFreeProviderInfo(XRRProviderInfo *provider)
+{
+ STUB();
+}
+
+WL_EXPORT int
+XRRSetProviderOutputSource(Display *xdisplay, XID provider, XID source_provider)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return 0;
+}
+
+WL_EXPORT int
+XRRSetProviderOffloadSink(Display *xdisplay, XID provider, XID sink_provider)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return 0;
+}
+
+WL_EXPORT Atom *
+XRRListProviderProperties(Display *xdisplay, RRProvider provider, int *nprop)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT XRRPropertyInfo *
+XRRQueryProviderProperty(Display *xdisplay, RRProvider provider, Atom property)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return NULL;
+}
+
+WL_EXPORT void
+XRRConfigureProviderProperty(Display *xdisplay, RRProvider provider, Atom property,
+ Bool pending, Bool range, int num_values,
+ long *values)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+}
+
+WL_EXPORT void
+XRRChangeProviderProperty(Display *xdisplay, RRProvider provider,
+ Atom property, Atom type,
+ int format, int mode,
+ _Xconst unsigned char *data, int nelements)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+}
+
+WL_EXPORT void
+XRRDeleteProviderProperty(Display *xdisplay, RRProvider provider, Atom property)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+}
+
+WL_EXPORT int
+XRRGetProviderProperty(Display *xdisplay, RRProvider provider,
+ Atom property, long offset, long length,
+ Bool _delete, Bool pending, Atom req_type,
+ Atom *actual_type, int *actual_format,
+ unsigned long *nitems, unsigned long *bytes_after,
+ unsigned char **prop)
+{
+ struct csx_display *display = csx_display(xdisplay);
+ struct csx_randr *randr = display->randr;
+
+ csx_display_enter(display, randr->extension.major, X_RRQueryVersion);
+
+ STUB();
+
+ return 0;
+}