From 72929c5cb3b78d3b83a2f40e3662104194b70cd6 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 25 Aug 2009 16:07:54 +1000 Subject: Move dmxext.h from dmxproto to here. Signed-off-by: Peter Hutterer --- configure.ac | 2 +- include/X11/extensions/dmxext.h | 162 ++++++++++++++++++++++++++++++++++++++++ src/Makefile.am | 10 ++- 3 files changed, 172 insertions(+), 2 deletions(-) create mode 100644 include/X11/extensions/dmxext.h diff --git a/configure.ac b/configure.ac index 7f943b6..bf52727 100644 --- a/configure.ac +++ b/configure.ac @@ -38,7 +38,7 @@ AC_PROG_LIBTOOL XORG_CWARNFLAGS # Check for dependencies -PKG_CHECK_MODULES(DMX, x11 xext xextproto dmxproto) +PKG_CHECK_MODULES(DMX, x11 xext xextproto [dmxproto >= 2.2.99.1]) DMX_CFLAGS="$CWARNFLAGS $DMX_CFLAGS" AC_SUBST(DMX_CFLAGS) AC_SUBST(DMX_LIBS) diff --git a/include/X11/extensions/dmxext.h b/include/X11/extensions/dmxext.h new file mode 100644 index 0000000..492aabf --- /dev/null +++ b/include/X11/extensions/dmxext.h @@ -0,0 +1,162 @@ +/* + * Copyright 2002-2004 Red Hat Inc., Durham, North Carolina. + * + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation on the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/* + * Authors: + * Rickard E. (Rik) Faith + * + */ + +/** \file + * This file describes the interface to the client-side libdmx.a + * library. All DMX-aware client-side applications should include this + * file. */ + +#ifndef _DMXEXT_H_ +#define _DMXEXT_H_ + +#include + +/** Client-library screen information structure, returned by + * #DMXGetScreenAttributes. */ +typedef struct { + char *displayName; + int logicalScreen; + + unsigned int screenWindowWidth; /* displayName's coordinate system */ + unsigned int screenWindowHeight; /* displayName's coordinate system */ + int screenWindowXoffset; /* displayName's coordinate system */ + int screenWindowYoffset; /* displayName's coordinate system */ + + unsigned int rootWindowWidth; /* screenWindow's coordinate system */ + unsigned int rootWindowHeight; /* screenWindow's coordinate system */ + int rootWindowXoffset; /* screenWindow's coordinate system */ + int rootWindowYoffset; /* screenWindow's coordinate system */ + + int rootWindowXorigin; /* global coordinate system */ + int rootWindowYorigin; /* global coordinate system */ +} DMXScreenAttributes; + +/** Client-library window information structure, returned by + * #DMXGetWindowAttributes. */ +typedef struct { + int screen; + Window window; + XRectangle pos, vis; +} DMXWindowAttributes; + +/** Client-library desktop information structure, returned by + * #DMXGetDesktopAttributes. */ +typedef struct { + unsigned int width; /* global coordinate system */ + unsigned int height; /* global coordinate system */ + int shiftX; /* global coordinate system */ + int shiftY; /* global coordinate system */ +} DMXDesktopAttributes; + +/** Enumeration for the #inputType field in the #DMXInputAttributes + * structure. */ +typedef enum { + DMXLocalInputType, + DMXConsoleInputType, + DMXBackendInputType +} DMXInputEnum; + +/** Client-library input information structure, returned by + * #DMXGetInputAttributes. */ +typedef struct { + DMXInputEnum inputType; + int physicalScreen; + int physicalId; + Bool isCore; + Bool sendsCore; + const char *name; + Bool detached; +} DMXInputAttributes; + +_XFUNCPROTOBEGIN + +extern Bool DMXQueryExtension(Display *dpy, + int *event_basep, int *error_basep); +extern Bool DMXQueryVersion(Display *dpy, int *major_version, + int *minor_version, int *patch_version); +extern Bool DMXSync(Display *dpy); +extern Bool DMXForceWindowCreation(Display *dpy, Window window); + + +extern Bool DMXGetScreenCount(Display *dpy, int *screen_count); +extern Bool DMXGetScreenAttributes(Display *dpy, + int screen, + DMXScreenAttributes *attr); +extern int DMXChangeScreensAttributes(Display *dpy, + int screen_count, + int *screens, + int mask_count, + unsigned int *masks, + DMXScreenAttributes *attr, /* vector */ + int *error_screen); + +extern Bool DMXAddScreen(Display *dpy, + const char *displayName, + unsigned int mask, + DMXScreenAttributes *attr, + int *screen); +extern Bool DMXRemoveScreen(Display *dpy, int screen); + +/* Call DMXGetScreenWindowCount and allocate info to that size. Pass + * the size in available_count. This call can generate a large amount + * of wire traffic and should not be used called with available_count=0 + * just to determine the screen_count value -- use DMXGetScreenCount + * instead. NOTE: Also see DMX protocol specification (DMXSpec.txt) for + * usage of DMXSync to flush pending commands. */ +extern Bool DMXGetWindowAttributes(Display *dpy, Window window, + int *screen_count, int available_count, + DMXWindowAttributes *attr); + +extern Bool DMXGetDesktopAttributes(Display *dpy, DMXDesktopAttributes *attr); +extern int DMXChangeDesktopAttributes(Display *dpy, + unsigned int mask, + DMXDesktopAttributes *attr); + +extern Bool DMXGetInputCount(Display *dpy, int *input_count); +extern Bool DMXGetInputAttributes(Display *dpy, int id, + DMXInputAttributes *attr); + +extern Bool DMXAddInput(Display *dpy, + unsigned int mask, + DMXInputAttributes *attr, + int *id); +extern Bool DMXRemoveInput(Display *dpy, int id); + +/* These are helper functions that call DMXAddInput. */ +extern Bool DMXAddBackendInput(Display *dpy, int screen, int sendsCore, + int *newId); +extern Bool DMXAddConsoleInput(Display *dpy, const char *name, int sendsCore, + int *newId); + +_XFUNCPROTOEND +#endif diff --git a/src/Makefile.am b/src/Makefile.am index 6f8f548..434c56f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -7,4 +7,12 @@ libdmx_la_LIBADD = $(DMX_LIBS) libdmx_la_LDFLAGS = -version-number 1:0:0 -no-undefined -AM_CFLAGS = $(DMX_CFLAGS) $(MALLOC_ZERO_CFLAGS) +AM_CFLAGS = -I$(top_srcdir)/include \ + -I$(top_srcdir)/include/X11 \ + -I$(top_srcdir)/include/X11/extensions \ + $(DMX_CFLAGS) \ + $(MALLOC_ZERO_CFLAGS) + +libdmxincludedir = $(includedir)/X11/extensions +libdmxinclude_HEADERS = $(top_srcdir)/include/X11/extensions/dmxext.h + -- cgit v1.2.1