# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.61)
-AC_INIT(libhwc, 0.1.0, [http://])
+AC_INIT(libhwc, 0.2.0, [http://])
AC_CONFIG_SRCDIR([src/hwc.c])
AC_CONFIG_HEADER([config.h])
AC_SUBST(XLIBS_CFLAGS)
AC_SUBST(XLIBS_LIBS)
-PKG_CHECK_MODULES(HWCPROTO, hwcproto)
+PKG_CHECK_MODULES(HWCPROTO, hwcproto >= 0.2.0)
AC_SUBST(HWCPROTO_CFLAGS)
AC_SUBST(HWCPROTO_LIBS)
#define _HWC_H_
#include <X11/extensions/hwctokens.h>
+#include <X11/extensions/Xrandr.h>
#include <X11/Xfuncproto.h>
#include <X11/Xlib.h>
HWCQueryVersion(Display * display, int *major, int *minor);
extern Bool
-HWCOpen(Display * dpy, Window window, int *maxLayer);
+HWCOpen(Display * dpy, RRCrtc crtc, int *maxLayer);
extern void
-HWCSetDrawables(Display * dpy, Window window, Drawable *drawables, XRectangle *srcRect, XRectangle *dstRect, int count);
+HWCSetDrawables(Display * dpy, RRCrtc crtc, Window window, Drawable *drawables, XRectangle *srcRect, XRectangle *dstRect, HWCCompositeMethod *compMethods, int count);
extern void
HWCSelectInput(Display * dpy, Window window, int mask);
LockDisplay(dpy);
GetReq(HWCQueryVersion, req);
+ if (!req) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return False;
+ }
+
req->reqType = info->codes->major_opcode;
req->hwcReqType = X_HWCQueryVersion;
req->majorVersion = HWC_MAJOR;
}
Bool
-HWCOpen(Display * dpy, Window window, int *maxLayer)
+HWCOpen(Display * dpy, RRCrtc crtc, int *maxLayer)
{
XExtDisplayInfo *info = HWCFindDisplay(dpy);
xHWCOpenReply rep;
LockDisplay(dpy);
GetReq(HWCOpen, req);
+ if (!req) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return False;
+ }
+
req->reqType = info->codes->major_opcode;
req->hwcReqType = X_HWCOpen;
- req->window = window;
+ req->window = 0;
+ req->crtc = crtc;
if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
UnlockDisplay(dpy);
}
void
-HWCSetDrawables(Display * dpy, Window window, Drawable *drawables, XRectangle *srcRect, XRectangle *dstRect, int count)
+HWCSetDrawables(Display * dpy, RRCrtc crtc, Window window, Drawable *drawables, XRectangle *srcRect, XRectangle *dstRect, HWCCompositeMethod *compMethods, int count)
{
XExtDisplayInfo *info = HWCFindDisplay(dpy);
xHWCSetDrawablesReq *req;
LockDisplay(dpy);
GetReqExtra(HWCSetDrawables, count * SIZEOF(xHWCDrawInfo), req);
+ if (!req) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return;
+ }
req->reqType = info->codes->major_opcode;
req->hwcReqType = X_HWCSetDrawables;
req->window = window;
req->count = count;
+ req->crtc = crtc;
p = (xHWCDrawInfo *) & req[1];
for (i = 0; i < count; i++)
{
p[i].dstY = dstRect[i].y;
p[i].dstWidth = dstRect[i].width;
p[i].dstHeight = dstRect[i].height;
+ p[i].compMethod = compMethods[i];
}
UnlockDisplay(dpy);
LockDisplay(dpy);
GetReq(HWCSelectInput, req);
+ if (!req) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return;
+ }
+
req->reqType = info->codes->major_opcode;
req->hwcReqType = X_HWCSelectInput;
req->window = window;