Add XME hooks to X11 driver instead of relying on libxme...libxme hasn't
changed in five years, and it's a small .c file that just calls into the X11 dependencies we already use elsewhere. Including it directly allows us to make use of the dynamic X11 code. Fixes Bugzilla #41. --ryan. --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401245
This commit is contained in:
parent
474b79de1c
commit
c1c1b65a1e
7 changed files with 450 additions and 12 deletions
10
configure.in
10
configure.in
|
@ -760,19 +760,11 @@ CheckX11()
|
||||||
, enable_video_x11_xme=yes)
|
, enable_video_x11_xme=yes)
|
||||||
if test x$enable_video_x11_xme = xyes; then
|
if test x$enable_video_x11_xme = xyes; then
|
||||||
AC_MSG_CHECKING(for Xi Graphics XiGMiscExtension support)
|
AC_MSG_CHECKING(for Xi Graphics XiGMiscExtension support)
|
||||||
video_x11_xme=no
|
|
||||||
AC_TRY_COMPILE([
|
|
||||||
#include <X11/Xlib.h>
|
|
||||||
#include <X11/extensions/xme.h>
|
|
||||||
],[
|
|
||||||
XiGMiscResolutionInfo *resolutions;
|
|
||||||
],[
|
|
||||||
video_x11_xme=yes
|
video_x11_xme=yes
|
||||||
])
|
|
||||||
AC_MSG_RESULT($video_x11_xme)
|
AC_MSG_RESULT($video_x11_xme)
|
||||||
if test x$video_x11_xme = xyes; then
|
if test x$video_x11_xme = xyes; then
|
||||||
CFLAGS="$CFLAGS -DHAVE_XIGXME"
|
CFLAGS="$CFLAGS -DHAVE_XIGXME"
|
||||||
SYSTEM_LIBS="$SYSTEM_LIBS -lxme"
|
SYSTEM_LIBS="$SYSTEM_LIBS"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
|
|
||||||
SUBDIRS = extensions Xinerama Xv Xxf86dga Xxf86vm
|
SUBDIRS = extensions Xinerama Xv Xxf86dga Xxf86vm XME
|
||||||
|
|
||||||
EXTRA_DIST = README
|
EXTRA_DIST = README
|
||||||
|
|
6
src/video/Xext/XME/Makefile.am
Normal file
6
src/video/Xext/XME/Makefile.am
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
|
||||||
|
## Makefile.am for the XME library
|
||||||
|
|
||||||
|
noinst_LTLIBRARIES = libXME.la
|
||||||
|
libXME_la_SOURCES = xme.c
|
||||||
|
|
397
src/video/Xext/XME/xme.c
Normal file
397
src/video/Xext/XME/xme.c
Normal file
|
@ -0,0 +1,397 @@
|
||||||
|
/*
|
||||||
|
* Copyright 1993-2001 by Xi Graphics, Inc.
|
||||||
|
* All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Please see the LICENSE file accompanying this distribution for licensing
|
||||||
|
* information.
|
||||||
|
*
|
||||||
|
* Please send any bug fixes and modifications to src@xig.com.
|
||||||
|
*
|
||||||
|
* $XiGId: xme.c,v 1.2 2001/11/30 21:56:59 jon Exp $
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define NEED_EVENTS
|
||||||
|
#define NEED_REPLIES
|
||||||
|
|
||||||
|
#include <X11/Xlibint.h>
|
||||||
|
#include <X11/Xthreads.h>
|
||||||
|
#include <X11/Xmd.h>
|
||||||
|
#include <X11/Xproto.h>
|
||||||
|
#include <X11/extensions/Xext.h>
|
||||||
|
#include "extutil.h"
|
||||||
|
|
||||||
|
#include "../../x11/SDL_x11dyn.h"
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#define XIGMISC_PROTOCOL_NAME "XiG-SUNDRY-NONSTANDARD"
|
||||||
|
#define XIGMISC_MAJOR_VERSION 2
|
||||||
|
#define XIGMISC_MINOR_VERSION 0
|
||||||
|
|
||||||
|
#define XiGMiscNumberEvents 0
|
||||||
|
|
||||||
|
#define X_XiGMiscQueryVersion 0
|
||||||
|
#define X_XiGMiscQueryViews 1
|
||||||
|
#define X_XiGMiscQueryResolutions 2
|
||||||
|
#define X_XiGMiscChangeResolution 3
|
||||||
|
#define X_XiGMiscFullScreen 4
|
||||||
|
|
||||||
|
#define sz_xXiGMiscQueryVersionReq 8
|
||||||
|
#define sz_xXiGMiscQueryViewsReq 8
|
||||||
|
#define sz_xXiGMiscQueryResolutionsReq 8
|
||||||
|
#define sz_xXiGMiscChangeResolutionReq 16
|
||||||
|
#define sz_xXiGMiscFullScreenReq 16
|
||||||
|
|
||||||
|
#define sz_xXiGMiscQueryVersionReply 32
|
||||||
|
#define sz_xXiGMiscQueryViewsReply 32
|
||||||
|
#define sz_xXiGMiscQueryResolutionsReply 32
|
||||||
|
#define sz_xXiGMiscQueryFullScreenReply 32
|
||||||
|
|
||||||
|
/*******************************************************************/
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
CARD8 reqType; /* always codes->major_opcode */
|
||||||
|
CARD8 xigmiscReqType; /* always X_XiGMiscQueryVersion */
|
||||||
|
CARD16 length;
|
||||||
|
CARD16 major;
|
||||||
|
CARD16 minor;
|
||||||
|
} xXiGMiscQueryVersionReq;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
CARD8 reqType; /* always codes->major_opcode */
|
||||||
|
CARD8 xigmiscReqType; /* always X_XiGMiscQueryViews */
|
||||||
|
CARD16 length;
|
||||||
|
CARD8 screen;
|
||||||
|
CARD8 pad0;
|
||||||
|
CARD16 pad1;
|
||||||
|
} xXiGMiscQueryViewsReq;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
CARD8 reqType; /* always codes->major_opcode */
|
||||||
|
CARD8 xigmiscReqType; /* always X_XiGMiscQueryResolutions */
|
||||||
|
CARD16 length;
|
||||||
|
CARD8 screen;
|
||||||
|
CARD8 view;
|
||||||
|
CARD16 pad0;
|
||||||
|
} xXiGMiscQueryResolutionsReq;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
CARD8 reqType; /* always codes->major_opcode */
|
||||||
|
CARD8 xigmiscReqType; /* always X_XiGMiscChangeResolution */
|
||||||
|
CARD16 length;
|
||||||
|
CARD8 screen;
|
||||||
|
CARD8 view;
|
||||||
|
CARD16 pad0;
|
||||||
|
CARD16 width;
|
||||||
|
CARD16 height;
|
||||||
|
INT32 refresh;
|
||||||
|
} xXiGMiscChangeResolutionReq;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
CARD8 reqType; /* always codes->major_opcode */
|
||||||
|
CARD8 xigmiscReqType; /* always X_XiGMiscFullScreen */
|
||||||
|
CARD16 length;
|
||||||
|
CARD8 screen;
|
||||||
|
CARD8 pad0;
|
||||||
|
CARD16 pad1;
|
||||||
|
CARD32 window;
|
||||||
|
CARD32 cmap;
|
||||||
|
} xXiGMiscFullScreenReq;
|
||||||
|
|
||||||
|
/*******************************************************************/
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
BYTE type; /* X_Reply */
|
||||||
|
CARD8 pad0;
|
||||||
|
CARD16 sequenceNumber;
|
||||||
|
CARD32 length;
|
||||||
|
CARD16 major;
|
||||||
|
CARD16 minor;
|
||||||
|
CARD32 pad1;
|
||||||
|
CARD32 pad2;
|
||||||
|
CARD32 pad3;
|
||||||
|
CARD32 pad4;
|
||||||
|
CARD32 pad5;
|
||||||
|
} xXiGMiscQueryVersionReply;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
BYTE type; /* X_Reply */
|
||||||
|
CARD8 pad0;
|
||||||
|
CARD16 sequenceNumber;
|
||||||
|
CARD32 length;
|
||||||
|
CARD32 nviews;
|
||||||
|
CARD32 pad1;
|
||||||
|
CARD32 pad2;
|
||||||
|
CARD32 pad3;
|
||||||
|
CARD32 pad4;
|
||||||
|
CARD32 pad5;
|
||||||
|
} xXiGMiscQueryViewsReply;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
BYTE type; /* X_Reply */
|
||||||
|
CARD8 pad0;
|
||||||
|
CARD16 sequenceNumber;
|
||||||
|
CARD32 length;
|
||||||
|
CARD16 active;
|
||||||
|
CARD16 nresolutions;
|
||||||
|
CARD32 pad1;
|
||||||
|
CARD32 pad2;
|
||||||
|
CARD32 pad3;
|
||||||
|
CARD32 pad4;
|
||||||
|
CARD32 pad5;
|
||||||
|
} xXiGMiscQueryResolutionsReply;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
BYTE type; /* X_Reply */
|
||||||
|
BOOL success;
|
||||||
|
CARD16 sequenceNumber;
|
||||||
|
CARD32 length;
|
||||||
|
CARD32 pad1;
|
||||||
|
CARD32 pad2;
|
||||||
|
CARD32 pad3;
|
||||||
|
CARD32 pad4;
|
||||||
|
CARD32 pad5;
|
||||||
|
CARD32 pad6;
|
||||||
|
} xXiGMiscFullScreenReply;
|
||||||
|
|
||||||
|
/*******************************************************************/
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
INT16 x;
|
||||||
|
INT16 y;
|
||||||
|
CARD16 w;
|
||||||
|
CARD16 h;
|
||||||
|
} XiGMiscViewInfo;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
CARD16 width;
|
||||||
|
CARD16 height;
|
||||||
|
INT32 refresh;
|
||||||
|
} XiGMiscResolutionInfo;
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static XExtensionInfo *xigmisc_info = NULL;
|
||||||
|
static char *xigmisc_extension_name = XIGMISC_PROTOCOL_NAME;
|
||||||
|
|
||||||
|
#define XiGMiscCheckExtension(dpy,i,val) \
|
||||||
|
XextCheckExtension (dpy, i, xigmisc_extension_name, val)
|
||||||
|
#define XiGMiscSimpleCheckExtension(dpy,i) \
|
||||||
|
XextSimpleCheckExtension (dpy, i, xigmisc_extension_name)
|
||||||
|
|
||||||
|
#if defined(__STDC__) && !defined(UNIXCPP)
|
||||||
|
#define XiGMiscGetReq(name,req,info) GetReq (name, req); \
|
||||||
|
req->reqType = info->codes->major_opcode; \
|
||||||
|
req->xigmiscReqType = X_##name;
|
||||||
|
|
||||||
|
#define XiGMiscGetReqExtra(name,n,req,info) GetReqExtra (name, n, req); \
|
||||||
|
req->reqType = info->codes->major_opcode; \
|
||||||
|
req->xigmicReqType = X_##name;
|
||||||
|
#else
|
||||||
|
#define XiGMiscGetReq(name,req,info) GetReq (name, req); \
|
||||||
|
req->reqType = info->codes->major_opcode; \
|
||||||
|
req->xigmiscReqType = X_/**/name;
|
||||||
|
#define XiGMiscGetReqExtra(name,n,req,info) GetReqExtra (name, n, req); \
|
||||||
|
req->reqType = info->codes->major_opcode; \
|
||||||
|
req->xigmiscReqType = X_/**/name;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* find_display - locate the display info block
|
||||||
|
*/
|
||||||
|
static int XiGMiscCloseDisplay();
|
||||||
|
|
||||||
|
static XExtensionHooks xigmisc_extension_hooks = {
|
||||||
|
NULL, /* create_gc */
|
||||||
|
NULL, /* copy_gc */
|
||||||
|
NULL, /* flush_gc */
|
||||||
|
NULL, /* free_gc */
|
||||||
|
NULL, /* create_font */
|
||||||
|
NULL, /* free_font */
|
||||||
|
XiGMiscCloseDisplay, /* close_display */
|
||||||
|
NULL, /* wire_to_event */
|
||||||
|
NULL, /* event_to_wire */
|
||||||
|
NULL, /* error */
|
||||||
|
NULL, /* error_string */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static XEXT_GENERATE_CLOSE_DISPLAY (XiGMiscCloseDisplay, xigmisc_info)
|
||||||
|
|
||||||
|
static XEXT_GENERATE_FIND_DISPLAY (XiGMiscFindDisplay, xigmisc_info,
|
||||||
|
xigmisc_extension_name,
|
||||||
|
&xigmisc_extension_hooks, XiGMiscNumberEvents, NULL)
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
Bool XiGMiscQueryVersion(Display *dpy, int *major, int *minor)
|
||||||
|
{
|
||||||
|
int opcode, event, error;
|
||||||
|
xXiGMiscQueryVersionReq *req;
|
||||||
|
xXiGMiscQueryVersionReply rep;
|
||||||
|
XExtDisplayInfo *info = XiGMiscFindDisplay(dpy);
|
||||||
|
|
||||||
|
if (!pXQueryExtension(dpy, XIGMISC_PROTOCOL_NAME, &opcode, &event, &error))
|
||||||
|
return xFalse;
|
||||||
|
|
||||||
|
XiGMiscCheckExtension(dpy, info, xFalse);
|
||||||
|
|
||||||
|
LockDisplay (dpy);
|
||||||
|
XiGMiscGetReq (XiGMiscQueryVersion, req, info);
|
||||||
|
|
||||||
|
req->major = XIGMISC_MAJOR_VERSION;
|
||||||
|
req->minor = XIGMISC_MINOR_VERSION;
|
||||||
|
|
||||||
|
if (!p_XReply (dpy, (xReply *)&rep, 0, xTrue)) {
|
||||||
|
UnlockDisplay(dpy);
|
||||||
|
SyncHandle();
|
||||||
|
return xFalse;
|
||||||
|
}
|
||||||
|
|
||||||
|
*major = rep.major;
|
||||||
|
*minor = rep.minor;
|
||||||
|
UnlockDisplay(dpy);
|
||||||
|
SyncHandle();
|
||||||
|
|
||||||
|
return xTrue;
|
||||||
|
}
|
||||||
|
|
||||||
|
int XiGMiscQueryViews(Display *dpy, int screen, XiGMiscViewInfo **pviews)
|
||||||
|
{
|
||||||
|
int n, size;
|
||||||
|
XiGMiscViewInfo *views;
|
||||||
|
xXiGMiscQueryViewsReq *req;
|
||||||
|
xXiGMiscQueryViewsReply rep;
|
||||||
|
XExtDisplayInfo *info = XiGMiscFindDisplay(dpy);
|
||||||
|
XiGMiscCheckExtension(dpy, info, 0);
|
||||||
|
|
||||||
|
LockDisplay (dpy);
|
||||||
|
XiGMiscGetReq (XiGMiscQueryViews, req, info);
|
||||||
|
req->screen = screen;
|
||||||
|
|
||||||
|
if (!p_XReply (dpy, (xReply *)&rep, 0, xFalse)) {
|
||||||
|
UnlockDisplay(dpy);
|
||||||
|
SyncHandle();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
n = rep.nviews;
|
||||||
|
|
||||||
|
if (n > 0) {
|
||||||
|
size = sizeof(XiGMiscViewInfo) * n;
|
||||||
|
views = (XiGMiscViewInfo*)Xmalloc(size);
|
||||||
|
if (!views) {
|
||||||
|
p_XEatData(dpy, (unsigned long)size);
|
||||||
|
UnlockDisplay(dpy);
|
||||||
|
SyncHandle();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p_XReadPad(dpy, (void*)views, size);
|
||||||
|
|
||||||
|
*pviews = views;
|
||||||
|
}
|
||||||
|
|
||||||
|
UnlockDisplay(dpy);
|
||||||
|
SyncHandle();
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
int XiGMiscQueryResolutions(Display *dpy, int screen, int view, int *pactive, XiGMiscResolutionInfo **presolutions)
|
||||||
|
{
|
||||||
|
int n, size;
|
||||||
|
XiGMiscResolutionInfo *resolutions;
|
||||||
|
xXiGMiscQueryResolutionsReq *req;
|
||||||
|
xXiGMiscQueryResolutionsReply rep;
|
||||||
|
XExtDisplayInfo *info = XiGMiscFindDisplay(dpy);
|
||||||
|
XiGMiscCheckExtension(dpy, info, 0);
|
||||||
|
|
||||||
|
LockDisplay (dpy);
|
||||||
|
XiGMiscGetReq (XiGMiscQueryResolutions, req, info);
|
||||||
|
req->screen = screen;
|
||||||
|
req->view = view;
|
||||||
|
|
||||||
|
if (!p_XReply (dpy, (xReply *)&rep, 0, xFalse)) {
|
||||||
|
UnlockDisplay(dpy);
|
||||||
|
SyncHandle();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
n = rep.nresolutions;
|
||||||
|
|
||||||
|
if (n > 0) {
|
||||||
|
size = sizeof(XiGMiscResolutionInfo) * n;
|
||||||
|
resolutions = (XiGMiscResolutionInfo*)Xmalloc(size);
|
||||||
|
if (!resolutions) {
|
||||||
|
p_XEatData(dpy, (unsigned long)size);
|
||||||
|
UnlockDisplay(dpy);
|
||||||
|
SyncHandle();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p_XReadPad(dpy, (void*)resolutions, size);
|
||||||
|
|
||||||
|
*presolutions = resolutions;
|
||||||
|
*pactive = rep.active;
|
||||||
|
}
|
||||||
|
|
||||||
|
UnlockDisplay(dpy);
|
||||||
|
SyncHandle();
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
void XiGMiscChangeResolution(Display *dpy, int screen, int view, int width, int height, int refresh)
|
||||||
|
{
|
||||||
|
xXiGMiscChangeResolutionReq *req;
|
||||||
|
XExtDisplayInfo *info = XiGMiscFindDisplay(dpy);
|
||||||
|
|
||||||
|
XiGMiscSimpleCheckExtension(dpy, info);
|
||||||
|
|
||||||
|
LockDisplay (dpy);
|
||||||
|
XiGMiscGetReq (XiGMiscChangeResolution, req, info);
|
||||||
|
req->screen = screen;
|
||||||
|
req->view = view;
|
||||||
|
req->width = width;
|
||||||
|
req->height = height;
|
||||||
|
req->refresh = refresh;
|
||||||
|
|
||||||
|
UnlockDisplay(dpy);
|
||||||
|
SyncHandle();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Bool XiGMiscFullScreen(Display *dpy, int screen, XID window, XID cmap)
|
||||||
|
{
|
||||||
|
xXiGMiscFullScreenReq *req;
|
||||||
|
xXiGMiscFullScreenReply rep;
|
||||||
|
XExtDisplayInfo *info = XiGMiscFindDisplay(dpy);
|
||||||
|
|
||||||
|
XiGMiscCheckExtension(dpy, info, xFalse);
|
||||||
|
|
||||||
|
LockDisplay (dpy);
|
||||||
|
XiGMiscGetReq (XiGMiscFullScreen, req, info);
|
||||||
|
req->screen = screen;
|
||||||
|
req->pad0 = 0;
|
||||||
|
req->pad1 = 0;
|
||||||
|
req->window = window;
|
||||||
|
req->cmap = cmap;
|
||||||
|
|
||||||
|
if (!p_XReply (dpy, (xReply *)&rep, 0, xTrue)) {
|
||||||
|
UnlockDisplay(dpy);
|
||||||
|
SyncHandle();
|
||||||
|
return xFalse;
|
||||||
|
}
|
||||||
|
|
||||||
|
UnlockDisplay(dpy);
|
||||||
|
SyncHandle();
|
||||||
|
|
||||||
|
return (rep.success ? xTrue : xFalse);
|
||||||
|
}
|
||||||
|
|
|
@ -12,4 +12,6 @@ noinst_HEADERS = \
|
||||||
Xinerama.h \
|
Xinerama.h \
|
||||||
Xv.h \
|
Xv.h \
|
||||||
Xvlib.h \
|
Xvlib.h \
|
||||||
Xvproto.h
|
Xvproto.h \
|
||||||
|
xme.h
|
||||||
|
|
||||||
|
|
41
src/video/Xext/extensions/xme.h
Normal file
41
src/video/Xext/extensions/xme.h
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
/*
|
||||||
|
* Copyright 1993-2001 by Xi Graphics, Inc.
|
||||||
|
* All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Please see the LICENSE file accompanying this distribution for licensing
|
||||||
|
* information.
|
||||||
|
*
|
||||||
|
* Please send any bug fixes and modifications to src@xig.com.
|
||||||
|
*
|
||||||
|
* $XiGId: xme.h,v 1.1.1.1 2001/11/19 19:01:10 jon Exp $
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _XME_H_INCLUDED
|
||||||
|
#define _XME_H_INCLUDED
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
short x;
|
||||||
|
short y;
|
||||||
|
unsigned short w;
|
||||||
|
unsigned short h;
|
||||||
|
} XiGMiscViewInfo;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
unsigned short width;
|
||||||
|
unsigned short height;
|
||||||
|
int refresh;
|
||||||
|
} XiGMiscResolutionInfo;
|
||||||
|
|
||||||
|
extern Bool XiGMiscQueryVersion(Display *dpy, int *major, int *minor);
|
||||||
|
extern int XiGMiscQueryViews(Display *dpy, int screen,
|
||||||
|
XiGMiscViewInfo **pviews);
|
||||||
|
extern int XiGMiscQueryResolutions(Display *dpy, int screen, int view,
|
||||||
|
int *pactive,
|
||||||
|
XiGMiscResolutionInfo **presolutions);
|
||||||
|
extern void XiGMiscChangeResolution(Display *dpy, int screen, int view,
|
||||||
|
int width, int height, int refresh);
|
||||||
|
#endif /* _XME_H_INCLUDED */
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ static char rcsid =
|
||||||
#include <XFree86/extensions/xf86vmode.h>
|
#include <XFree86/extensions/xf86vmode.h>
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_XIGXME
|
#ifdef HAVE_XIGXME
|
||||||
#include <X11/extensions/xme.h>
|
#include <XFree86/extensions/xme.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue