Compare commits
149 Commits
scaling-mr
...
server-1.1
Author | SHA1 | Date |
---|---|---|
Adam Jackson | 2c7fa2a423 | |
Martin Peres | bbf1893cc0 | |
Julien Cristau | 6e3892045e | |
Michel Dänzer | bf003230f9 | |
Adam Jackson | 780022a8a5 | |
Chris Wilson | d9344ef3ea | |
Hans de Goede | 88f22fc5da | |
Keith Packard | 0ca79007c9 | |
Jeremy Huddleston | 82000d6d03 | |
Jeremy Huddleston | 2ae94d6e89 | |
Jeremy Huddleston | a88460ca82 | |
Jeremy Huddleston | 0f051cb4c3 | |
Jeremy Huddleston | 8a30fd207c | |
Chris Wilson | 0c5ef339ae | |
Arcady Goldmints-Orlov | 025ae119a7 | |
Alan Coopersmith | 62e2aa02ef | |
Keith Packard | 616239c15d | |
Eric Anholt | 87151fefb0 | |
Chris Wilson | 20bdec9171 | |
Ville Syrjälä | 5c0aea5fb3 | |
Michal Srb | 293d0efe3c | |
Dave Airlie | 833e3e84a0 | |
Andrea Canciani | 26a5364d50 | |
Cyril Brulebois | a22b828dad | |
Alan Coopersmith | 92f6b36397 | |
Alan Coopersmith | 0b2a9db19b | |
Alan Coopersmith | d135b4cf6b | |
Alan Coopersmith | 32f3432ea6 | |
Tiago Vignatti | 5c5bc6a9c2 | |
Robert Hooker | a55bfcc0df | |
Robert Hooker | 9cb53672b4 | |
Adam Jackson | 8810c46a98 | |
Keith Packard | 9a4ea1f5ea | |
Keith Packard | abe4485101 | |
Egbert Eich | c72d4f0027 | |
Chris Wilson | 7a53179425 | |
Alan Coopersmith | a85808ce3f | |
Aaron Plattner | 49d04a4336 | |
Adam Jackson | daf15b5516 | |
Ian Scott | 10a9448892 | |
Daniel Drake | 0134dc1b56 | |
Daniel Drake | f92c0b9f94 | |
Felix Janda | d2e4a9d4ac | |
Adam Jackson | e863ab57eb | |
Ingo Schwarze | 1688b7517e | |
Keith Packard | e9385b42a3 | |
Dave Airlie | 00b3f5a2ed | |
Dave Airlie | 3aacda0aea | |
Adam Jackson | 02c94ccddf | |
Adam Jackson | 71e4b536cd | |
Eric Anholt | 75399d32f6 | |
Alan Coopersmith | 288b355f48 | |
Adam Jackson | abfda3b941 | |
Fredrik Höglund | 23d52080a5 | |
Dave Airlie | 2a561fac70 | |
Michel Dänzer | 92effabee1 | |
Dave Airlie | a420301a8b | |
Michel Dänzer | fb17307b1b | |
Michel Dänzer | 8415eca0ab | |
Jeremy Huddleston Sequoia | eb9dea1e25 | |
Jeremy Huddleston Sequoia | 5e7aaf5e93 | |
Ken Thomases | 52506f60b6 | |
Jeremy Huddleston Sequoia | 3a7ed42d33 | |
Jeremy Huddleston Sequoia | d939043594 | |
Jeremy Huddleston Sequoia | ba00d8fe70 | |
Jeremy Huddleston Sequoia | 434890171d | |
Jeremy Huddleston Sequoia | 601e9b5f8c | |
Jeremy Huddleston Sequoia | 414fc605a9 | |
Jeremy Huddleston Sequoia | c15e48bb03 | |
Adam Jackson | 061ff2621c | |
Adam Jackson | 9e744ac376 | |
Julien Cristau | b46ff18b24 | |
Peter Harris | df4f69d462 | |
Andrew Eikum | d23171754a | |
Andrew Eikum | 9180329054 | |
Alan Coopersmith | 3f26c83726 | |
Alan Coopersmith | cb7ee9808a | |
Alan Coopersmith | 03dd982d2b | |
Alan Coopersmith | 78df8521cf | |
Alan Coopersmith | 3af4160822 | |
Alan Coopersmith | 649f37fa01 | |
Alan Coopersmith | 069180bd2a | |
Alan Coopersmith | 00a962261a | |
Alan Coopersmith | 25292a3bc1 | |
Alan Coopersmith | 43251c13d7 | |
Alan Coopersmith | d4b0ab8332 | |
Alan Coopersmith | 9041051664 | |
Alan Coopersmith | 838952c97e | |
Adam Jackson | 2123f7682d | |
Dave Airlie | 8a5fb096d4 | |
Rui Matos | ea9e021843 | |
Chris Wilson | 6cc61df989 | |
Vicente Olivert Riera | 8b7e1f362b | |
Ray Strode | c424458c93 | |
Ray Strode | 01b4f5bc89 | |
Ray Strode | bebaaa2216 | |
Egbert Eich | 761be9cceb | |
Egbert Eich | f775f24773 | |
Egbert Eich | 6395873ea9 | |
Egbert Eich | 70ce575307 | |
Egbert Eich | a4882ac792 | |
Jonathan Gray | 0dc9da5ce9 | |
Jonathan Gray | 828a1e3803 | |
Michel Dänzer | 68eb9afb20 | |
Michel Dänzer | 554cb404a5 | |
Adel Gadllah | ae3aa32688 | |
Dima Ryazanov | d8a39245d6 | |
Jason Gerecke | 5b23104d58 | |
Rui Matos | 6f7a3366a2 | |
Brent Collins | 1a87dbc2ce | |
Chris Wilson | 4f3df05728 | |
Olivier Fourdan | 40f35e4488 | |
Jason Gerecke | 5497f56b87 | |
Robert Ancell | 9e39ba30f1 | |
Colin Harrison | 953520ef98 | |
Jon TURNEY | cc88bb64ad | |
Jon TURNEY | 36bba39db1 | |
Colin Harrison | 5ea517fd39 | |
Alan Coopersmith | 2a2f676dce | |
Ray Strode | 9b9d621f11 | |
Ray Strode | bb5a8da756 | |
Keith Packard | 2c818e7b5d | |
Hans de Goede | 72b66d508a | |
Aaron Plattner | 2ce54b8139 | |
Aaron Plattner | 905126c66c | |
Jon TURNEY | d8153d1767 | |
Olivier Fourdan | e0bb4a1ec7 | |
Maarten Lankhorst | 9d4c8ff673 | |
Maarten Lankhorst | 3bfeccf88a | |
Maarten Lankhorst | 6a37a33e4c | |
Maarten Lankhorst | 1ec335ca15 | |
Olivier Fourdan | 5df6982a14 | |
Olivier Fourdan | e2bddc36af | |
Emil Velikov | e2c6135179 | |
Emil Velikov | 8c3a0a1904 | |
Jon TURNEY | 660b4469f2 | |
Jon TURNEY | c3db722ffe | |
Jon TURNEY | 6fa7510e6a | |
Jon TURNEY | 1de38b588e | |
Jon TURNEY | 44930264eb | |
Jon TURNEY | 74ab42c85b | |
Jürg Billeter | dee92c7805 | |
Alan Coopersmith | 19da4355ee | |
Michal Srb | a4132357c2 | |
Dave Airlie | 650a1fd274 | |
Egbert Eich | 7a45d1684f | |
Keith Packard | 3b0d1ba226 | |
Olivier Fourdan | f160e72267 | |
Olivier Fourdan | 29be310c30 |
10
Xext/shm.c
10
Xext/shm.c
|
@ -260,7 +260,7 @@ ShmDestroyPixmap(PixmapPtr pPixmap)
|
||||||
pScreen->DestroyPixmap = ShmDestroyPixmap;
|
pScreen->DestroyPixmap = ShmDestroyPixmap;
|
||||||
|
|
||||||
if (shmdesc)
|
if (shmdesc)
|
||||||
ShmDetachSegment(shmdesc, pPixmap->drawable.id);
|
ShmDetachSegment(shmdesc, 0);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -427,7 +427,7 @@ ProcShmAttach(ClientPtr client)
|
||||||
|
|
||||||
/*ARGSUSED*/ static int
|
/*ARGSUSED*/ static int
|
||||||
ShmDetachSegment(void *value, /* must conform to DeleteType */
|
ShmDetachSegment(void *value, /* must conform to DeleteType */
|
||||||
XID shmseg)
|
XID unused)
|
||||||
{
|
{
|
||||||
ShmDescPtr shmdesc = (ShmDescPtr) value;
|
ShmDescPtr shmdesc = (ShmDescPtr) value;
|
||||||
ShmDescPtr *prev;
|
ShmDescPtr *prev;
|
||||||
|
@ -971,6 +971,12 @@ ProcPanoramiXShmCreatePixmap(ClientPtr client)
|
||||||
stuff->offset);
|
stuff->offset);
|
||||||
|
|
||||||
if (pMap) {
|
if (pMap) {
|
||||||
|
result = XaceHook(XACE_RESOURCE_ACCESS, client, stuff->pid,
|
||||||
|
RT_PIXMAP, pMap, RT_NONE, NULL, DixCreateAccess);
|
||||||
|
if (result != Success) {
|
||||||
|
pDraw->pScreen->DestroyPixmap(pMap);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
dixSetPrivate(&pMap->devPrivates, shmPixmapPrivateKey, shmdesc);
|
dixSetPrivate(&pMap->devPrivates, shmPixmapPrivateKey, shmdesc);
|
||||||
shmdesc->refcnt++;
|
shmdesc->refcnt++;
|
||||||
pMap->drawable.serialNumber = NEXT_SERIAL_NUMBER;
|
pMap->drawable.serialNumber = NEXT_SERIAL_NUMBER;
|
||||||
|
|
15
Xext/xace.c
15
Xext/xace.c
|
@ -213,6 +213,21 @@ XaceHook(int hook, ...)
|
||||||
return prv ? *prv : Success;
|
return prv ? *prv : Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* XaceHookIsSet
|
||||||
|
*
|
||||||
|
* Utility function to determine whether there are any callbacks listening on a
|
||||||
|
* particular XACE hook.
|
||||||
|
*
|
||||||
|
* Returns non-zero if there is a callback, zero otherwise.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
XaceHookIsSet(int hook)
|
||||||
|
{
|
||||||
|
if (hook < 0 || hook >= XACE_NUM_HOOKS)
|
||||||
|
return 0;
|
||||||
|
return XaceHooks[hook] != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* XaceCensorImage
|
/* XaceCensorImage
|
||||||
*
|
*
|
||||||
* Called after pScreen->GetImage to prevent pieces or trusted windows from
|
* Called after pScreen->GetImage to prevent pieces or trusted windows from
|
||||||
|
|
|
@ -65,6 +65,9 @@ extern _X_EXPORT int XaceHook(int /*hook */ ,
|
||||||
... /*appropriate args for hook */
|
... /*appropriate args for hook */
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/* determine whether any callbacks are present for the XACE hook */
|
||||||
|
extern _X_EXPORT int XaceHookIsSet(int hook);
|
||||||
|
|
||||||
/* Special-cased hook functions
|
/* Special-cased hook functions
|
||||||
*/
|
*/
|
||||||
extern _X_EXPORT int XaceHookDispatch(ClientPtr ptr, int major);
|
extern _X_EXPORT int XaceHookDispatch(ClientPtr ptr, int major);
|
||||||
|
@ -109,6 +112,7 @@ extern _X_EXPORT void XaceCensorImage(ClientPtr client,
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#define XaceHook(args...) Success
|
#define XaceHook(args...) Success
|
||||||
|
#define XaceHookIsSet(args...) 0
|
||||||
#define XaceHookDispatch(args...) Success
|
#define XaceHookDispatch(args...) Success
|
||||||
#define XaceHookPropertyAccess(args...) Success
|
#define XaceHookPropertyAccess(args...) Success
|
||||||
#define XaceHookSelectionAccess(args...) Success
|
#define XaceHookSelectionAccess(args...) Success
|
||||||
|
@ -116,6 +120,7 @@ extern _X_EXPORT void XaceCensorImage(ClientPtr client,
|
||||||
#define XaceCensorImage(args...) { ; }
|
#define XaceCensorImage(args...) { ; }
|
||||||
#else
|
#else
|
||||||
#define XaceHook(...) Success
|
#define XaceHook(...) Success
|
||||||
|
#define XaceHookIsSet(...) 0
|
||||||
#define XaceHookDispatch(...) Success
|
#define XaceHookDispatch(...) Success
|
||||||
#define XaceHookPropertyAccess(...) Success
|
#define XaceHookPropertyAccess(...) Success
|
||||||
#define XaceHookSelectionAccess(...) Success
|
#define XaceHookSelectionAccess(...) Success
|
||||||
|
|
|
@ -147,7 +147,7 @@ SELinuxLabelClient(ClientPtr client)
|
||||||
strncpy(subj->command, cmdname, COMMAND_LEN - 1);
|
strncpy(subj->command, cmdname, COMMAND_LEN - 1);
|
||||||
|
|
||||||
if (!cached)
|
if (!cached)
|
||||||
free(cmdname); /* const char * */
|
free((void *) cmdname); /* const char * */
|
||||||
}
|
}
|
||||||
|
|
||||||
finish:
|
finish:
|
||||||
|
@ -294,6 +294,9 @@ SELinuxAudit(void *auditdata,
|
||||||
audit->extension ? audit->extension : "");
|
audit->extension ? audit->extension : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
SELinuxLog(int type, const char *fmt, ...) _X_ATTRIBUTE_PRINTF(2, 3);
|
||||||
|
|
||||||
static int
|
static int
|
||||||
SELinuxLog(int type, const char *fmt, ...)
|
SELinuxLog(int type, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
|
@ -316,6 +319,7 @@ SELinuxLog(int type, const char *fmt, ...)
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
vsnprintf(buf, MAX_AUDIT_MESSAGE_LENGTH, fmt, ap);
|
vsnprintf(buf, MAX_AUDIT_MESSAGE_LENGTH, fmt, ap);
|
||||||
rc = audit_log_user_avc_message(audit_fd, aut, buf, NULL, NULL, NULL, 0);
|
rc = audit_log_user_avc_message(audit_fd, aut, buf, NULL, NULL, NULL, 0);
|
||||||
|
(void) rc;
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
LogMessageVerb(X_WARNING, 0, "%s", buf);
|
LogMessageVerb(X_WARNING, 0, "%s", buf);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -476,7 +480,7 @@ SELinuxExtension(CallbackListPtr *pcbl, void *unused, void *calldata)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Perform the security check */
|
/* Perform the security check */
|
||||||
auditdata.extension = rec->ext->name;
|
auditdata.extension = (char *) rec->ext->name;
|
||||||
rc = SELinuxDoCheck(subj, obj, SECCLASS_X_EXTENSION, rec->access_mode,
|
rc = SELinuxDoCheck(subj, obj, SECCLASS_X_EXTENSION, rec->access_mode,
|
||||||
&auditdata);
|
&auditdata);
|
||||||
if (rc != Success)
|
if (rc != Success)
|
||||||
|
|
|
@ -1730,6 +1730,18 @@ ProcessDeviceEvent(InternalEvent *ev, DeviceIntPtr device)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* send KeyPress and KeyRelease events to XACE plugins */
|
||||||
|
if (XaceHookIsSet(XACE_KEY_AVAIL) &&
|
||||||
|
(event->type == ET_KeyPress || event->type == ET_KeyRelease)) {
|
||||||
|
xEvent *core;
|
||||||
|
int count;
|
||||||
|
|
||||||
|
if (EventToCore(ev, &core, &count) == Success && count > 0) {
|
||||||
|
XaceHook(XACE_KEY_AVAIL, core, device, 0);
|
||||||
|
free(core);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (DeviceEventCallback && !syncEvents.playingEvents) {
|
if (DeviceEventCallback && !syncEvents.playingEvents) {
|
||||||
DeviceEventInfoRec eventinfo;
|
DeviceEventInfoRec eventinfo;
|
||||||
SpritePtr pSprite = device->spriteInfo->sprite;
|
SpritePtr pSprite = device->spriteInfo->sprite;
|
||||||
|
|
12
configure.ac
12
configure.ac
|
@ -26,9 +26,9 @@ dnl
|
||||||
dnl Process this file with autoconf to create configure.
|
dnl Process this file with autoconf to create configure.
|
||||||
|
|
||||||
AC_PREREQ(2.60)
|
AC_PREREQ(2.60)
|
||||||
AC_INIT([xorg-server], 1.17.0, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
|
AC_INIT([xorg-server], 1.17.4, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
|
||||||
RELEASE_DATE="2015-02-02"
|
RELEASE_DATE="2015-10-28"
|
||||||
RELEASE_NAME="Côte de veau"
|
RELEASE_NAME="Cider Donut"
|
||||||
AC_CONFIG_SRCDIR([Makefile.am])
|
AC_CONFIG_SRCDIR([Makefile.am])
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
AM_INIT_AUTOMAKE([foreign dist-bzip2])
|
AM_INIT_AUTOMAKE([foreign dist-bzip2])
|
||||||
|
@ -1976,7 +1976,7 @@ if test "x$XORG" = xyes; then
|
||||||
sparc*)
|
sparc*)
|
||||||
SOLARIS_INOUT_ARCH="sparcv8plus"
|
SOLARIS_INOUT_ARCH="sparcv8plus"
|
||||||
;;
|
;;
|
||||||
i*86)
|
i*86|x86_64*)
|
||||||
if test x$SOLARIS_64 = xyes ; then
|
if test x$SOLARIS_64 = xyes ; then
|
||||||
SOLARIS_INOUT_ARCH="amd64"
|
SOLARIS_INOUT_ARCH="amd64"
|
||||||
else
|
else
|
||||||
|
@ -2423,7 +2423,8 @@ if test "$KDRIVE" = yes; then
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
KDRIVE_LOCAL_LIBS="$MAIN_LIB $DIX_LIB $KDRIVE_LIB"
|
KDRIVE_MAIN_LIB="$MAIN_LIB"
|
||||||
|
KDRIVE_LOCAL_LIBS="$DIX_LIB $KDRIVE_LIB"
|
||||||
KDRIVE_LOCAL_LIBS="$KDRIVE_LOCAL_LIBS $FB_LIB $MI_LIB $KDRIVE_PURE_LIBS"
|
KDRIVE_LOCAL_LIBS="$KDRIVE_LOCAL_LIBS $FB_LIB $MI_LIB $KDRIVE_PURE_LIBS"
|
||||||
KDRIVE_LOCAL_LIBS="$KDRIVE_LOCAL_LIBS $KDRIVE_OS_LIB"
|
KDRIVE_LOCAL_LIBS="$KDRIVE_LOCAL_LIBS $KDRIVE_OS_LIB"
|
||||||
KDRIVE_LIBS="$KDRIVE_LOCAL_LIBS $XSERVER_SYS_LIBS $GLX_SYS_LIBS $DLOPEN_LIBS $TSLIB_LIBS"
|
KDRIVE_LIBS="$KDRIVE_LOCAL_LIBS $XSERVER_SYS_LIBS $GLX_SYS_LIBS $DLOPEN_LIBS $TSLIB_LIBS"
|
||||||
|
@ -2435,6 +2436,7 @@ AC_SUBST([KDRIVE_INCS])
|
||||||
AC_SUBST([KDRIVE_PURE_INCS])
|
AC_SUBST([KDRIVE_PURE_INCS])
|
||||||
AC_SUBST([KDRIVE_CFLAGS])
|
AC_SUBST([KDRIVE_CFLAGS])
|
||||||
AC_SUBST([KDRIVE_PURE_LIBS])
|
AC_SUBST([KDRIVE_PURE_LIBS])
|
||||||
|
AC_SUBST([KDRIVE_MAIN_LIB])
|
||||||
AC_SUBST([KDRIVE_LOCAL_LIBS])
|
AC_SUBST([KDRIVE_LOCAL_LIBS])
|
||||||
AC_SUBST([KDRIVE_LIBS])
|
AC_SUBST([KDRIVE_LIBS])
|
||||||
AM_CONDITIONAL(KDRIVELINUX, [test "x$KDRIVELINUX" = xyes])
|
AM_CONDITIONAL(KDRIVELINUX, [test "x$KDRIVELINUX" = xyes])
|
||||||
|
|
|
@ -31,6 +31,9 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
typedef const uint8_t *const_uint8_p;
|
||||||
|
typedef const double *const_double_p;
|
||||||
|
|
||||||
provider Xserver {
|
provider Xserver {
|
||||||
/* reqType, data, length, client id, request buffer */
|
/* reqType, data, length, client id, request buffer */
|
||||||
probe request__start(string, uint8_t, uint16_t, int, void *);
|
probe request__start(string, uint8_t, uint16_t, int, void *);
|
||||||
|
@ -49,7 +52,7 @@ provider Xserver {
|
||||||
/* client id, event type, event* */
|
/* client id, event type, event* */
|
||||||
probe send__event(int, uint8_t, void *);
|
probe send__event(int, uint8_t, void *);
|
||||||
/* deviceid, type, button/keycode/touchid, flags, nvalues, mask, values */
|
/* deviceid, type, button/keycode/touchid, flags, nvalues, mask, values */
|
||||||
probe input__event(int, int, uint32_t, uint32_t, int8_t, uint8_t*, double*);
|
probe input__event(int, int, uint32_t, uint32_t, int8_t, const_uint8_p, const_double_p);
|
||||||
};
|
};
|
||||||
|
|
||||||
#pragma D attributes Unstable/Unstable/Common provider Xserver provider
|
#pragma D attributes Unstable/Unstable/Common provider Xserver provider
|
||||||
|
|
|
@ -177,6 +177,9 @@ DeviceSetProperty(DeviceIntPtr dev, Atom property, XIPropertyValuePtr prop,
|
||||||
if (!isfinite(f[i]))
|
if (!isfinite(f[i]))
|
||||||
return BadValue;
|
return BadValue;
|
||||||
|
|
||||||
|
if (!dev->valuator)
|
||||||
|
return BadMatch;
|
||||||
|
|
||||||
if (!checkonly)
|
if (!checkonly)
|
||||||
DeviceSetTransform(dev, f);
|
DeviceSetTransform(dev, f);
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,10 +131,7 @@ int ProcInitialConnection();
|
||||||
|
|
||||||
#ifdef XSERVER_DTRACE
|
#ifdef XSERVER_DTRACE
|
||||||
#include "registry.h"
|
#include "registry.h"
|
||||||
#include <sys/types.h>
|
#include "probes.h"
|
||||||
typedef const char *string;
|
|
||||||
|
|
||||||
#include "Xserver-dtrace.h"
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define mskcnt ((MAXCLIENTS + 31) / 32)
|
#define mskcnt ((MAXCLIENTS + 31) / 32)
|
||||||
|
|
|
@ -314,8 +314,6 @@ doOpenFont(ClientPtr client, OFclosurePtr c)
|
||||||
if (err == Suspended) {
|
if (err == Suspended) {
|
||||||
if (!ClientIsAsleep(client))
|
if (!ClientIsAsleep(client))
|
||||||
ClientSleep(client, (ClientSleepProcPtr) doOpenFont, c);
|
ClientSleep(client, (ClientSleepProcPtr) doOpenFont, c);
|
||||||
else
|
|
||||||
goto xinerama_sleep;
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -363,7 +361,6 @@ doOpenFont(ClientPtr client, OFclosurePtr c)
|
||||||
c->fontid, FontToXError(err));
|
c->fontid, FontToXError(err));
|
||||||
}
|
}
|
||||||
ClientWakeup(c->client);
|
ClientWakeup(c->client);
|
||||||
xinerama_sleep:
|
|
||||||
for (i = 0; i < c->num_fpes; i++) {
|
for (i = 0; i < c->num_fpes; i++) {
|
||||||
FreeFPE(c->fpe_list[i]);
|
FreeFPE(c->fpe_list[i]);
|
||||||
}
|
}
|
||||||
|
@ -596,8 +593,6 @@ doListFontsAndAliases(ClientPtr client, LFclosurePtr c)
|
||||||
if (!ClientIsAsleep(client))
|
if (!ClientIsAsleep(client))
|
||||||
ClientSleep(client,
|
ClientSleep(client,
|
||||||
(ClientSleepProcPtr) doListFontsAndAliases, c);
|
(ClientSleepProcPtr) doListFontsAndAliases, c);
|
||||||
else
|
|
||||||
goto xinerama_sleep;
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -623,8 +618,6 @@ doListFontsAndAliases(ClientPtr client, LFclosurePtr c)
|
||||||
ClientSleep(client,
|
ClientSleep(client,
|
||||||
(ClientSleepProcPtr) doListFontsAndAliases,
|
(ClientSleepProcPtr) doListFontsAndAliases,
|
||||||
c);
|
c);
|
||||||
else
|
|
||||||
goto xinerama_sleep;
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
if (err == Successful)
|
if (err == Successful)
|
||||||
|
@ -642,8 +635,6 @@ doListFontsAndAliases(ClientPtr client, LFclosurePtr c)
|
||||||
ClientSleep(client,
|
ClientSleep(client,
|
||||||
(ClientSleepProcPtr) doListFontsAndAliases,
|
(ClientSleepProcPtr) doListFontsAndAliases,
|
||||||
c);
|
c);
|
||||||
else
|
|
||||||
goto xinerama_sleep;
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
if (err == FontNameAlias) {
|
if (err == FontNameAlias) {
|
||||||
|
@ -788,7 +779,6 @@ doListFontsAndAliases(ClientPtr client, LFclosurePtr c)
|
||||||
|
|
||||||
bail:
|
bail:
|
||||||
ClientWakeup(client);
|
ClientWakeup(client);
|
||||||
xinerama_sleep:
|
|
||||||
for (i = 0; i < c->num_fpes; i++)
|
for (i = 0; i < c->num_fpes; i++)
|
||||||
FreeFPE(c->fpe_list[i]);
|
FreeFPE(c->fpe_list[i]);
|
||||||
free(c->fpe_list);
|
free(c->fpe_list);
|
||||||
|
@ -888,8 +878,6 @@ doListFontsWithInfo(ClientPtr client, LFWIclosurePtr c)
|
||||||
if (!ClientIsAsleep(client))
|
if (!ClientIsAsleep(client))
|
||||||
ClientSleep(client,
|
ClientSleep(client,
|
||||||
(ClientSleepProcPtr) doListFontsWithInfo, c);
|
(ClientSleepProcPtr) doListFontsWithInfo, c);
|
||||||
else
|
|
||||||
goto xinerama_sleep;
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
if (err == Successful)
|
if (err == Successful)
|
||||||
|
@ -905,8 +893,6 @@ doListFontsWithInfo(ClientPtr client, LFWIclosurePtr c)
|
||||||
if (!ClientIsAsleep(client))
|
if (!ClientIsAsleep(client))
|
||||||
ClientSleep(client,
|
ClientSleep(client,
|
||||||
(ClientSleepProcPtr) doListFontsWithInfo, c);
|
(ClientSleepProcPtr) doListFontsWithInfo, c);
|
||||||
else
|
|
||||||
goto xinerama_sleep;
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1040,7 +1026,6 @@ doListFontsWithInfo(ClientPtr client, LFWIclosurePtr c)
|
||||||
WriteSwappedDataToClient(client, length, &finalReply);
|
WriteSwappedDataToClient(client, length, &finalReply);
|
||||||
bail:
|
bail:
|
||||||
ClientWakeup(client);
|
ClientWakeup(client);
|
||||||
xinerama_sleep:
|
|
||||||
for (i = 0; i < c->num_fpes; i++)
|
for (i = 0; i < c->num_fpes; i++)
|
||||||
FreeFPE(c->fpe_list[i]);
|
FreeFPE(c->fpe_list[i]);
|
||||||
free(c->reply);
|
free(c->reply);
|
||||||
|
@ -1297,8 +1282,6 @@ doPolyText(ClientPtr client, PTclosurePtr c)
|
||||||
client_state = START_SLEEP;
|
client_state = START_SLEEP;
|
||||||
continue; /* on to steps 3 and 4 */
|
continue; /* on to steps 3 and 4 */
|
||||||
}
|
}
|
||||||
else
|
|
||||||
goto xinerama_sleep;
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else if (lgerr != Successful) {
|
else if (lgerr != Successful) {
|
||||||
|
@ -1352,7 +1335,6 @@ doPolyText(ClientPtr client, PTclosurePtr c)
|
||||||
}
|
}
|
||||||
if (ClientIsAsleep(client)) {
|
if (ClientIsAsleep(client)) {
|
||||||
ClientWakeup(c->client);
|
ClientWakeup(c->client);
|
||||||
xinerama_sleep:
|
|
||||||
ChangeGC(NullClient, c->pGC, clearGCmask, clearGC);
|
ChangeGC(NullClient, c->pGC, clearGCmask, clearGC);
|
||||||
|
|
||||||
/* Unreference the font from the scratch GC */
|
/* Unreference the font from the scratch GC */
|
||||||
|
@ -1477,8 +1459,6 @@ doImageText(ClientPtr client, ITclosurePtr c)
|
||||||
|
|
||||||
ClientSleep(client, (ClientSleepProcPtr) doImageText, c);
|
ClientSleep(client, (ClientSleepProcPtr) doImageText, c);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
goto xinerama_sleep;
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else if (lgerr != Successful) {
|
else if (lgerr != Successful) {
|
||||||
|
@ -1501,7 +1481,6 @@ doImageText(ClientPtr client, ITclosurePtr c)
|
||||||
}
|
}
|
||||||
if (ClientIsAsleep(client)) {
|
if (ClientIsAsleep(client)) {
|
||||||
ClientWakeup(c->client);
|
ClientWakeup(c->client);
|
||||||
xinerama_sleep:
|
|
||||||
ChangeGC(NullClient, c->pGC, clearGCmask, clearGC);
|
ChangeGC(NullClient, c->pGC, clearGCmask, clearGC);
|
||||||
|
|
||||||
/* Unreference the font from the scratch GC */
|
/* Unreference the font from the scratch GC */
|
||||||
|
|
|
@ -125,13 +125,7 @@ Equipment Corporation.
|
||||||
#include <X11/extensions/XKBproto.h>
|
#include <X11/extensions/XKBproto.h>
|
||||||
#include "xkbsrv.h"
|
#include "xkbsrv.h"
|
||||||
#include "xace.h"
|
#include "xace.h"
|
||||||
|
#include "probes.h"
|
||||||
#ifdef XSERVER_DTRACE
|
|
||||||
#include <sys/types.h>
|
|
||||||
typedef const char *string;
|
|
||||||
|
|
||||||
#include "Xserver-dtrace.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <X11/extensions/XIproto.h>
|
#include <X11/extensions/XIproto.h>
|
||||||
#include <X11/extensions/XI2proto.h>
|
#include <X11/extensions/XI2proto.h>
|
||||||
|
@ -1063,6 +1057,7 @@ MonthChangedOrBadTime(CARD32 *ms)
|
||||||
void
|
void
|
||||||
NoticeTime(const DeviceIntPtr dev, TimeStamp time)
|
NoticeTime(const DeviceIntPtr dev, TimeStamp time)
|
||||||
{
|
{
|
||||||
|
currentTime = time;
|
||||||
lastDeviceEventTime[XIAllDevices].time = currentTime;
|
lastDeviceEventTime[XIAllDevices].time = currentTime;
|
||||||
lastDeviceEventTime[dev->id].time = currentTime;
|
lastDeviceEventTime[dev->id].time = currentTime;
|
||||||
|
|
||||||
|
|
|
@ -68,12 +68,7 @@
|
||||||
#include "exevents.h"
|
#include "exevents.h"
|
||||||
#include "extnsionst.h"
|
#include "extnsionst.h"
|
||||||
#include "listdev.h" /* for sizing up DeviceClassesChangedEvent */
|
#include "listdev.h" /* for sizing up DeviceClassesChangedEvent */
|
||||||
|
#include "probes.h"
|
||||||
#if XSERVER_DTRACE
|
|
||||||
#include <sys/types.h>
|
|
||||||
typedef const char *string;
|
|
||||||
#include <Xserver-dtrace.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Number of motion history events to store. */
|
/* Number of motion history events to store. */
|
||||||
#define MOTION_HISTORY_SIZE 256
|
#define MOTION_HISTORY_SIZE 256
|
||||||
|
|
|
@ -337,6 +337,7 @@ dix_main(int argc, char *argv[], char *envp[])
|
||||||
for (i = screenInfo.numGPUScreens - 1; i >= 0; i--) {
|
for (i = screenInfo.numGPUScreens - 1; i >= 0; i--) {
|
||||||
ScreenPtr pScreen = screenInfo.gpuscreens[i];
|
ScreenPtr pScreen = screenInfo.gpuscreens[i];
|
||||||
FreeScratchPixmapsForScreen(pScreen);
|
FreeScratchPixmapsForScreen(pScreen);
|
||||||
|
dixFreeScreenSpecificPrivates(pScreen);
|
||||||
(*pScreen->CloseScreen) (pScreen);
|
(*pScreen->CloseScreen) (pScreen);
|
||||||
dixFreePrivates(pScreen->devPrivates, PRIVATE_SCREEN);
|
dixFreePrivates(pScreen->devPrivates, PRIVATE_SCREEN);
|
||||||
free(pScreen);
|
free(pScreen);
|
||||||
|
|
|
@ -642,6 +642,15 @@ dixRegisterScreenSpecificPrivateKey(ScreenPtr pScreen, DevPrivateKey key,
|
||||||
void
|
void
|
||||||
dixFreeScreenSpecificPrivates(ScreenPtr pScreen)
|
dixFreeScreenSpecificPrivates(ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
|
DevPrivateType t;
|
||||||
|
|
||||||
|
for (t = PRIVATE_XSELINUX; t < PRIVATE_LAST; t++) {
|
||||||
|
DevPrivateKey key;
|
||||||
|
|
||||||
|
for (key = pScreen->screenSpecificPrivates[t].key; key; key = key->next) {
|
||||||
|
key->initialized = FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize screen-specific privates in AddScreen */
|
/* Initialize screen-specific privates in AddScreen */
|
||||||
|
|
299
dix/protocol.txt
299
dix/protocol.txt
|
@ -6,20 +6,6 @@
|
||||||
#
|
#
|
||||||
# This is a security-sensitive file, please set permissions as appropriate.
|
# This is a security-sensitive file, please set permissions as appropriate.
|
||||||
#
|
#
|
||||||
R001 Adobe-DPS-Extension:Init
|
|
||||||
R002 Adobe-DPS-Extension:CreateContext
|
|
||||||
R003 Adobe-DPS-Extension:CreateSpace
|
|
||||||
R004 Adobe-DPS-Extension:GiveInput
|
|
||||||
R005 Adobe-DPS-Extension:GetStatus
|
|
||||||
R006 Adobe-DPS-Extension:DestroySpace
|
|
||||||
R007 Adobe-DPS-Extension:Reset
|
|
||||||
R008 Adobe-DPS-Extension:NotifyContext
|
|
||||||
R009 Adobe-DPS-Extension:CreateContextFromID
|
|
||||||
R010 Adobe-DPS-Extension:XIDFromContext
|
|
||||||
R011 Adobe-DPS-Extension:ContextFromXID
|
|
||||||
R012 Adobe-DPS-Extension:SetStatusMask
|
|
||||||
R013 Adobe-DPS-Extension:CreateSecureContext
|
|
||||||
R014 Adobe-DPS-Extension:NotifyWhenReady
|
|
||||||
R000 Apple-DRI:QueryVersion
|
R000 Apple-DRI:QueryVersion
|
||||||
R001 Apple-DRI:QueryDirectRenderingCapable
|
R001 Apple-DRI:QueryDirectRenderingCapable
|
||||||
R002 Apple-DRI:CreateSurface
|
R002 Apple-DRI:CreateSurface
|
||||||
|
@ -65,22 +51,6 @@ R003 DAMAGE:Subtract
|
||||||
R004 DAMAGE:Add
|
R004 DAMAGE:Add
|
||||||
V000 DAMAGE:Notify
|
V000 DAMAGE:Notify
|
||||||
E000 DAMAGE:BadDamage
|
E000 DAMAGE:BadDamage
|
||||||
R000 DEC-XTRAP:Reset
|
|
||||||
R001 DEC-XTRAP:GetAvailable
|
|
||||||
R002 DEC-XTRAP:Config
|
|
||||||
R003 DEC-XTRAP:StartTrap
|
|
||||||
R004 DEC-XTRAP:StopTrap
|
|
||||||
R005 DEC-XTRAP:GetCurrent
|
|
||||||
R006 DEC-XTRAP:GetStatistics
|
|
||||||
R007 DEC-XTRAP:SimulateXEvent
|
|
||||||
R008 DEC-XTRAP:GetVersion
|
|
||||||
R009 DEC-XTRAP:GetLastInpTime
|
|
||||||
V000 DEC-XTRAP:Event
|
|
||||||
E002 DEC-XTRAP:BadIO
|
|
||||||
E004 DEC-XTRAP:BadStatistics
|
|
||||||
E005 DEC-XTRAP:BadDevices
|
|
||||||
E007 DEC-XTRAP:BadScreen
|
|
||||||
E008 DEC-XTRAP:BadSwapReq
|
|
||||||
R000 DMX:DMXQueryVersion
|
R000 DMX:DMXQueryVersion
|
||||||
R001 DMX:DMXGetScreenCount
|
R001 DMX:DMXGetScreenCount
|
||||||
R002 DMX:DMXGetScreenInfoDEPRECATED
|
R002 DMX:DMXGetScreenInfoDEPRECATED
|
||||||
|
@ -124,6 +94,19 @@ R004 DRI2:DestroyDrawable
|
||||||
R005 DRI2:GetBuffers
|
R005 DRI2:GetBuffers
|
||||||
R006 DRI2:CopyRegion
|
R006 DRI2:CopyRegion
|
||||||
R007 DRI2:GetBuffersWithFormat
|
R007 DRI2:GetBuffersWithFormat
|
||||||
|
R008 DRI2:SwapBuffers
|
||||||
|
R009 DRI2:GetMSC
|
||||||
|
R010 DRI2:WaitMSC
|
||||||
|
R011 DRI2:WaitSBC
|
||||||
|
R012 DRI2:SwapInterval
|
||||||
|
V000 DRI2:BufferSwapComplete
|
||||||
|
V001 DRI2:InvalidateBuffers
|
||||||
|
R000 DRI3:QueryVersion
|
||||||
|
R001 DRI3:Open
|
||||||
|
R002 DRI3:PixmapFromBuffer
|
||||||
|
R003 DRI3:BufferFromPixmap
|
||||||
|
R004 DRI3:FenceFromFD
|
||||||
|
R005 DRI3:FDFromFence
|
||||||
R000 Extended-Visual-Information:QueryVersion
|
R000 Extended-Visual-Information:QueryVersion
|
||||||
R001 Extended-Visual-Information:GetVisualInfo
|
R001 Extended-Visual-Information:GetVisualInfo
|
||||||
R000 FontCache:QueryVersion
|
R000 FontCache:QueryVersion
|
||||||
|
@ -152,6 +135,20 @@ R017 GLX:VendorPrivateWithReply
|
||||||
R018 GLX:QueryExtensionsString
|
R018 GLX:QueryExtensionsString
|
||||||
R019 GLX:QueryServerString
|
R019 GLX:QueryServerString
|
||||||
R020 GLX:ClientInfo
|
R020 GLX:ClientInfo
|
||||||
|
R021 GLX:GetFBConfigs
|
||||||
|
R022 GLX:CreatePixmap
|
||||||
|
R023 GLX:DestroyPixmap
|
||||||
|
R024 GLX:CreateNewContext
|
||||||
|
R025 GLX:QueryContext
|
||||||
|
R026 GLX:MakeContextCurrent
|
||||||
|
R027 GLX:CreatePbuffer
|
||||||
|
R028 GLX:DestroyPbuffer
|
||||||
|
R029 GLX:GetDrawableAttributes
|
||||||
|
R030 GLX:ChangeDrawableAttributes
|
||||||
|
R031 GLX:CreateWindow
|
||||||
|
R032 GLX:DeleteWindow
|
||||||
|
R033 GLX:SetClientInfoARB
|
||||||
|
R034 GLX:CreateContextAttribsARB
|
||||||
R101 GLX:NewList
|
R101 GLX:NewList
|
||||||
R102 GLX:EndList
|
R102 GLX:EndList
|
||||||
R103 GLX:DeleteLists
|
R103 GLX:DeleteLists
|
||||||
|
@ -194,6 +191,26 @@ R139 GLX:GetTexLevelParameteriv
|
||||||
R140 GLX:IsEnabled
|
R140 GLX:IsEnabled
|
||||||
R141 GLX:IsList
|
R141 GLX:IsList
|
||||||
R142 GLX:Flush
|
R142 GLX:Flush
|
||||||
|
R143 GLX:AreTexturesResident
|
||||||
|
R144 GLX:DeleteTextures
|
||||||
|
R145 GLX:GenTextures
|
||||||
|
R146 GLX:IsTexture
|
||||||
|
R147 GLX:GetColorTable
|
||||||
|
R148 GLX:GetColorTableParameterfv
|
||||||
|
R149 GLX:GetColorTableParameterfv
|
||||||
|
R150 GLX:GetConvolutionFilter
|
||||||
|
R151 GLX:GetConvolutionParameterfv
|
||||||
|
R152 GLX:GetConvolutionParameteriv
|
||||||
|
R153 GLX:GetSeparableFilter
|
||||||
|
R154 GLX:GetHistogram
|
||||||
|
R155 GLX:GetHistogramParameterfv
|
||||||
|
R156 GLX:GetHistogramParameteriv
|
||||||
|
R157 GLX:GetMinmax
|
||||||
|
R158 GLX:GetMinmaxParameterfv
|
||||||
|
R159 GLX:GetMinmaxParameteriv
|
||||||
|
R160 GLX:GetCompressedTexImage
|
||||||
|
V000 GLX:PbufferClobber
|
||||||
|
V001 GLX:BufferSwapComplete
|
||||||
E000 GLX:BadContext
|
E000 GLX:BadContext
|
||||||
E001 GLX:BadContextState
|
E001 GLX:BadContextState
|
||||||
E002 GLX:BadDrawable
|
E002 GLX:BadDrawable
|
||||||
|
@ -203,51 +220,10 @@ E005 GLX:BadCurrentWindow
|
||||||
E006 GLX:BadRenderRequest
|
E006 GLX:BadRenderRequest
|
||||||
E007 GLX:BadLargeRequest
|
E007 GLX:BadLargeRequest
|
||||||
E008 GLX:UnsupportedPrivateRequest
|
E008 GLX:UnsupportedPrivateRequest
|
||||||
R000 LBX:QueryVersion
|
E009 GLX:BadFBConfig
|
||||||
R001 LBX:StartProxy
|
E010 GLX:BadPbuffer
|
||||||
R002 LBX:StopProxy
|
E011 GLX:BadCurrentDrawable
|
||||||
R003 LBX:Switch
|
E012 GLX:BadWindow
|
||||||
R004 LBX:NewClient
|
|
||||||
R005 LBX:CloseClient
|
|
||||||
R006 LBX:ModifySequence
|
|
||||||
R007 LBX:AllowMotion
|
|
||||||
R008 LBX:IncrementPixel
|
|
||||||
R009 LBX:Delta
|
|
||||||
R010 LBX:GetModifierMapping
|
|
||||||
R011 LBX:QueryTag
|
|
||||||
R012 LBX:InvalidateTag
|
|
||||||
R013 LBX:PolyPoint
|
|
||||||
R014 LBX:PolyLine
|
|
||||||
R015 LBX:PolySegment
|
|
||||||
R016 LBX:PolyRectangle
|
|
||||||
R017 LBX:PolyArc
|
|
||||||
R018 LBX:FillPoly
|
|
||||||
R019 LBX:PolyFillRectangle
|
|
||||||
R020 LBX:PolyFillArc
|
|
||||||
R021 LBX:GetKeyboardMapping
|
|
||||||
R022 LBX:QueryFont
|
|
||||||
R023 LBX:ChangeProperty
|
|
||||||
R024 LBX:GetProperty
|
|
||||||
R025 LBX:TagData
|
|
||||||
R026 LBX:CopyArea
|
|
||||||
R027 LBX:CopyPlane
|
|
||||||
R028 LBX:PolyText8
|
|
||||||
R029 LBX:PolyText16
|
|
||||||
R030 LBX:ImageText8
|
|
||||||
R031 LBX:ImageText16
|
|
||||||
R032 LBX:QueryExtension
|
|
||||||
R033 LBX:PutImage
|
|
||||||
R034 LBX:GetImage
|
|
||||||
R035 LBX:BeginLargeRequest
|
|
||||||
R036 LBX:LargeRequestData
|
|
||||||
R037 LBX:EndLargeRequest
|
|
||||||
R038 LBX:InternAtoms
|
|
||||||
R039 LBX:GetWinAttrAndGeom
|
|
||||||
R040 LBX:GrabCmap
|
|
||||||
R041 LBX:ReleaseCmap
|
|
||||||
R042 LBX:AllocColor
|
|
||||||
R043 LBX:Sync
|
|
||||||
E000 LBX:BadLbxClient
|
|
||||||
R000 MIT-SCREEN-SAVER:QueryVersion
|
R000 MIT-SCREEN-SAVER:QueryVersion
|
||||||
R001 MIT-SCREEN-SAVER:QueryInfo
|
R001 MIT-SCREEN-SAVER:QueryInfo
|
||||||
R002 MIT-SCREEN-SAVER:SelectInput
|
R002 MIT-SCREEN-SAVER:SelectInput
|
||||||
|
@ -261,24 +237,17 @@ R002 MIT-SHM:Detach
|
||||||
R003 MIT-SHM:PutImage
|
R003 MIT-SHM:PutImage
|
||||||
R004 MIT-SHM:GetImage
|
R004 MIT-SHM:GetImage
|
||||||
R005 MIT-SHM:CreatePixmap
|
R005 MIT-SHM:CreatePixmap
|
||||||
|
R006 MIT-SHM:AttachFd
|
||||||
|
R007 MIT-SHM:CreateSegment
|
||||||
V000 MIT-SHM:Completion
|
V000 MIT-SHM:Completion
|
||||||
E000 MIT-SHM:BadShmSeg
|
E000 MIT-SHM:BadShmSeg
|
||||||
R000 MIT-SUNDRY-NONSTANDARD:SetBugMode
|
R000 MIT-SUNDRY-NONSTANDARD:SetBugMode
|
||||||
R001 MIT-SUNDRY-NONSTANDARD:GetBugMode
|
R001 MIT-SUNDRY-NONSTANDARD:GetBugMode
|
||||||
R000 Multi-Buffering:GetBufferVersion
|
R000 Present:QueryVersion
|
||||||
R001 Multi-Buffering:CreateImageBuffers
|
R001 Present:Pixmap
|
||||||
R002 Multi-Buffering:DestroyImageBuffers
|
R002 Present:NotifyMSC
|
||||||
R003 Multi-Buffering:DisplayImageBuffers
|
R003 Present:SelectInput
|
||||||
R004 Multi-Buffering:SetMBufferAttributes
|
R004 Present:QueryCapabilities
|
||||||
R005 Multi-Buffering:GetMBufferAttributes
|
|
||||||
R006 Multi-Buffering:SetBufferAttributes
|
|
||||||
R007 Multi-Buffering:GetBufferAttributes
|
|
||||||
R008 Multi-Buffering:GetBufferInfo
|
|
||||||
R009 Multi-Buffering:CreateStereoWindow
|
|
||||||
R010 Multi-Buffering:ClearImageBufferArea
|
|
||||||
V000 Multi-Buffering:ClobberNotify
|
|
||||||
V001 Multi-Buffering:UpdateNotify
|
|
||||||
E000 Multi-Buffering:BadBuffer
|
|
||||||
R000 RANDR:QueryVersion
|
R000 RANDR:QueryVersion
|
||||||
R001 RANDR:OldGetScreenInfo
|
R001 RANDR:OldGetScreenInfo
|
||||||
R002 RANDR:SetScreenConfig
|
R002 RANDR:SetScreenConfig
|
||||||
|
@ -628,125 +597,6 @@ E014 X11:BadIDChoice
|
||||||
E015 X11:BadName
|
E015 X11:BadName
|
||||||
E016 X11:BadLength
|
E016 X11:BadLength
|
||||||
E017 X11:BadImplementation
|
E017 X11:BadImplementation
|
||||||
R001 X3D-PEX:GetExtensionInfo
|
|
||||||
R002 X3D-PEX:GetEnumeratedTypeInfo
|
|
||||||
R003 X3D-PEX:GetImpDepConstants
|
|
||||||
R004 X3D-PEX:CreateLookupTable
|
|
||||||
R005 X3D-PEX:CopyLookupTable
|
|
||||||
R006 X3D-PEX:FreeLookupTable
|
|
||||||
R007 X3D-PEX:GetTableInfo
|
|
||||||
R008 X3D-PEX:GetPredefinedEntries
|
|
||||||
R009 X3D-PEX:GetDefinedIndices
|
|
||||||
R010 X3D-PEX:GetTableEntry
|
|
||||||
R011 X3D-PEX:GetTableEntries
|
|
||||||
R012 X3D-PEX:SetTableEntries
|
|
||||||
R013 X3D-PEX:DeleteTableEntries
|
|
||||||
R014 X3D-PEX:CreatePipelineContext
|
|
||||||
R015 X3D-PEX:CopyPipelineContext
|
|
||||||
R016 X3D-PEX:FreePipelineContext
|
|
||||||
R017 X3D-PEX:GetPipelineContext
|
|
||||||
R018 X3D-PEX:ChangePipelineContext
|
|
||||||
R019 X3D-PEX:CreateRenderer
|
|
||||||
R020 X3D-PEX:FreeRenderer
|
|
||||||
R021 X3D-PEX:ChangeRenderer
|
|
||||||
R022 X3D-PEX:GetRendererAttributes
|
|
||||||
R023 X3D-PEX:GetRendererDynamics
|
|
||||||
R024 X3D-PEX:BeginRendering
|
|
||||||
R025 X3D-PEX:EndRendering
|
|
||||||
R026 X3D-PEX:BeginStructure
|
|
||||||
R027 X3D-PEX:EndStructure
|
|
||||||
R028 X3D-PEX:OutputCommands
|
|
||||||
R029 X3D-PEX:Network
|
|
||||||
R030 X3D-PEX:CreateStructure
|
|
||||||
R031 X3D-PEX:CopyStructure
|
|
||||||
R032 X3D-PEX:DestroyStructures
|
|
||||||
R033 X3D-PEX:GetStructureInfo
|
|
||||||
R034 X3D-PEX:GetElementInfo
|
|
||||||
R035 X3D-PEX:GetStructuresInNetwork
|
|
||||||
R036 X3D-PEX:GetAncestors
|
|
||||||
R037 X3D-PEX:GetDescendants
|
|
||||||
R038 X3D-PEX:FetchElements
|
|
||||||
R039 X3D-PEX:SetEditingMode
|
|
||||||
R040 X3D-PEX:SetElementPointer
|
|
||||||
R041 X3D-PEX:SetElementPointerAtLabel
|
|
||||||
R042 X3D-PEX:ElementSearch
|
|
||||||
R043 X3D-PEX:StoreElements
|
|
||||||
R044 X3D-PEX:DeleteElements
|
|
||||||
R045 X3D-PEX:DeleteElementsToLabel
|
|
||||||
R046 X3D-PEX:DeleteBetweenLabels
|
|
||||||
R047 X3D-PEX:CopyElements
|
|
||||||
R048 X3D-PEX:ChangeStructureRefs
|
|
||||||
R049 X3D-PEX:CreateNameSet
|
|
||||||
R050 X3D-PEX:CopyNameSet
|
|
||||||
R051 X3D-PEX:FreeNameSet
|
|
||||||
R052 X3D-PEX:GetNameSet
|
|
||||||
R053 X3D-PEX:ChangeNameSet
|
|
||||||
R054 X3D-PEX:CreateSearchContext
|
|
||||||
R055 X3D-PEX:CopySearchContext
|
|
||||||
R056 X3D-PEX:FreeSearchContext
|
|
||||||
R057 X3D-PEX:GetSearchContext
|
|
||||||
R058 X3D-PEX:ChangeSearchContext
|
|
||||||
R059 X3D-PEX:SearchNetwork
|
|
||||||
R060 X3D-PEX:CreatePhigsWks
|
|
||||||
R061 X3D-PEX:FreePhigsWks
|
|
||||||
R062 X3D-PEX:GetWksInfo
|
|
||||||
R063 X3D-PEX:GetDynamics
|
|
||||||
R064 X3D-PEX:GetViewRep
|
|
||||||
R065 X3D-PEX:RedrawAllStructures
|
|
||||||
R066 X3D-PEX:UpdateWorkstation
|
|
||||||
R067 X3D-PEX:RedrawClipRegion
|
|
||||||
R068 X3D-PEX:ExecuteDeferredActions
|
|
||||||
R069 X3D-PEX:SetViewPriority
|
|
||||||
R070 X3D-PEX:SetDisplayUpdateMode
|
|
||||||
R071 X3D-PEX:MapDCtoWC
|
|
||||||
R072 X3D-PEX:MapWCtoDC
|
|
||||||
R073 X3D-PEX:SetViewRep
|
|
||||||
R074 X3D-PEX:SetWksWindow
|
|
||||||
R075 X3D-PEX:SetWksViewport
|
|
||||||
R076 X3D-PEX:SetHlhsrMode
|
|
||||||
R077 X3D-PEX:SetWksBufferMode
|
|
||||||
R078 X3D-PEX:PostStructure
|
|
||||||
R079 X3D-PEX:UnpostStructure
|
|
||||||
R080 X3D-PEX:UnpostAllStructures
|
|
||||||
R081 X3D-PEX:GetWksPostings
|
|
||||||
R082 X3D-PEX:GetPickDevice
|
|
||||||
R083 X3D-PEX:ChangePickDevice
|
|
||||||
R084 X3D-PEX:CreatePickMeasure
|
|
||||||
R085 X3D-PEX:FreePickMeasure
|
|
||||||
R086 X3D-PEX:GetPickMeasure
|
|
||||||
R087 X3D-PEX:UpdatePickMeasure
|
|
||||||
R088 X3D-PEX:OpenFont
|
|
||||||
R089 X3D-PEX:CloseFont
|
|
||||||
R090 X3D-PEX:QueryFont
|
|
||||||
R091 X3D-PEX:ListFonts
|
|
||||||
R092 X3D-PEX:ListFontsWithInfo
|
|
||||||
R093 X3D-PEX:QueryTextExtents
|
|
||||||
R094 X3D-PEX:MatchRenderingTargets
|
|
||||||
R095 X3D-PEX:Escape
|
|
||||||
R096 X3D-PEX:EscapeWithReply
|
|
||||||
R097 X3D-PEX:Elements
|
|
||||||
R098 X3D-PEX:AccumulateState
|
|
||||||
R099 X3D-PEX:BeginPickOne
|
|
||||||
R100 X3D-PEX:EndPickOne
|
|
||||||
R101 X3D-PEX:PickOne
|
|
||||||
R102 X3D-PEX:BeginPickAll
|
|
||||||
R103 X3D-PEX:EndPickAll
|
|
||||||
R104 X3D-PEX:PickAll
|
|
||||||
E000 X3D-PEX:ColorTypeError
|
|
||||||
E001 X3D-PEX:erStateError
|
|
||||||
E002 X3D-PEX:FloatingPointFormatError
|
|
||||||
E003 X3D-PEX:LabelError
|
|
||||||
E004 X3D-PEX:LookupTableError
|
|
||||||
E005 X3D-PEX:NameSetError
|
|
||||||
E006 X3D-PEX:PathError
|
|
||||||
E007 X3D-PEX:FontError
|
|
||||||
E008 X3D-PEX:PhigsWksError
|
|
||||||
E009 X3D-PEX:PickMeasureError
|
|
||||||
E010 X3D-PEX:PipelineContextError
|
|
||||||
E011 X3D-PEX:erError
|
|
||||||
E012 X3D-PEX:SearchContextError
|
|
||||||
E013 X3D-PEX:StructureError
|
|
||||||
E014 X3D-PEX:OutputCommandError
|
|
||||||
R000 XC-APPGROUP:QueryVersion
|
R000 XC-APPGROUP:QueryVersion
|
||||||
R001 XC-APPGROUP:Create
|
R001 XC-APPGROUP:Create
|
||||||
R002 XC-APPGROUP:Destroy
|
R002 XC-APPGROUP:Destroy
|
||||||
|
@ -890,39 +740,6 @@ E003 XFree86-VidModeExtension:ModeUnsuitable
|
||||||
E004 XFree86-VidModeExtension:ExtensionDisabled
|
E004 XFree86-VidModeExtension:ExtensionDisabled
|
||||||
E005 XFree86-VidModeExtension:ClientNotLocal
|
E005 XFree86-VidModeExtension:ClientNotLocal
|
||||||
E006 XFree86-VidModeExtension:ZoomLocked
|
E006 XFree86-VidModeExtension:ZoomLocked
|
||||||
R001 XIE:QueryImageExtension
|
|
||||||
R002 XIE:QueryTechniques
|
|
||||||
R003 XIE:CreateColorList
|
|
||||||
R004 XIE:DestroyColorList
|
|
||||||
R005 XIE:PurgeColorList
|
|
||||||
R006 XIE:QueryColorList
|
|
||||||
R007 XIE:CreateLUT
|
|
||||||
R008 XIE:DestroyLUT
|
|
||||||
R009 XIE:CreatePhotomap
|
|
||||||
R010 XIE:DestroyPhotomap
|
|
||||||
R011 XIE:QueryPhotomap
|
|
||||||
R012 XIE:CreateROI
|
|
||||||
R013 XIE:DestroyROI
|
|
||||||
R014 XIE:CreatePhotospace
|
|
||||||
R015 XIE:DestroyPhotospace
|
|
||||||
R016 XIE:ExecuteImmediate
|
|
||||||
R017 XIE:CreatePhotoflo
|
|
||||||
R018 XIE:DestroyPhotoflo
|
|
||||||
R019 XIE:ExecutePhotoflo
|
|
||||||
R020 XIE:ModifyPhotoflo
|
|
||||||
R021 XIE:RedefinePhotoflo
|
|
||||||
R022 XIE:PutClientData
|
|
||||||
R023 XIE:GetClientData
|
|
||||||
R024 XIE:QueryPhotoflo
|
|
||||||
R025 XIE:Await
|
|
||||||
R026 XIE:Abort
|
|
||||||
E000 XIE:ColorListError
|
|
||||||
E001 XIE:LUTError
|
|
||||||
E002 XIE:PhotofloError
|
|
||||||
E003 XIE:PhotomapError
|
|
||||||
E004 XIE:PhotospaceError
|
|
||||||
E005 XIE:ROIError
|
|
||||||
E006 XIE:FloError
|
|
||||||
R000 XINERAMA:QueryVersion
|
R000 XINERAMA:QueryVersion
|
||||||
R001 XINERAMA:GetState
|
R001 XINERAMA:GetState
|
||||||
R002 XINERAMA:GetScreenCount
|
R002 XINERAMA:GetScreenCount
|
||||||
|
|
|
@ -144,10 +144,7 @@ Equipment Corporation.
|
||||||
#include "gcstruct.h"
|
#include "gcstruct.h"
|
||||||
|
|
||||||
#ifdef XSERVER_DTRACE
|
#ifdef XSERVER_DTRACE
|
||||||
#include <sys/types.h>
|
#include "probes.h"
|
||||||
typedef const char *string;
|
|
||||||
|
|
||||||
#include "Xserver-dtrace.h"
|
|
||||||
|
|
||||||
#define TypeNameString(t) LookupResourceName(t)
|
#define TypeNameString(t) LookupResourceName(t)
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -636,7 +636,7 @@ exaTryDriverComposite(CARD8 op,
|
||||||
RegionRec region;
|
RegionRec region;
|
||||||
BoxPtr pbox;
|
BoxPtr pbox;
|
||||||
int nbox;
|
int nbox;
|
||||||
int src_off_x, src_off_y, mask_off_x, mask_off_y, dst_off_x, dst_off_y;
|
int src_off_x, src_off_y, mask_off_x = 0, mask_off_y = 0, dst_off_x, dst_off_y;
|
||||||
PixmapPtr pSrcPix = NULL, pMaskPix = NULL, pDstPix;
|
PixmapPtr pSrcPix = NULL, pMaskPix = NULL, pDstPix;
|
||||||
ExaPixmapPrivPtr pSrcExaPix = NULL, pMaskExaPix = NULL, pDstExaPix;
|
ExaPixmapPrivPtr pSrcExaPix = NULL, pMaskExaPix = NULL, pDstExaPix;
|
||||||
|
|
||||||
|
|
5
fb/fb.h
5
fb/fb.h
|
@ -472,13 +472,8 @@ typedef struct {
|
||||||
#define fbGetWindowPixmap(pWin) ((PixmapPtr)\
|
#define fbGetWindowPixmap(pWin) ((PixmapPtr)\
|
||||||
dixLookupPrivate(&((WindowPtr)(pWin))->devPrivates, fbGetWinPrivateKey(pWin)))
|
dixLookupPrivate(&((WindowPtr)(pWin))->devPrivates, fbGetWinPrivateKey(pWin)))
|
||||||
|
|
||||||
#ifdef ROOTLESS
|
|
||||||
#define __fbPixDrawableX(pPix) ((pPix)->drawable.x)
|
#define __fbPixDrawableX(pPix) ((pPix)->drawable.x)
|
||||||
#define __fbPixDrawableY(pPix) ((pPix)->drawable.y)
|
#define __fbPixDrawableY(pPix) ((pPix)->drawable.y)
|
||||||
#else
|
|
||||||
#define __fbPixDrawableX(pPix) 0
|
|
||||||
#define __fbPixDrawableY(pPix) 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef COMPOSITE
|
#ifdef COMPOSITE
|
||||||
#define __fbPixOffXWin(pPix) (__fbPixDrawableX(pPix) - (pPix)->screen_x)
|
#define __fbPixOffXWin(pPix) (__fbPixDrawableX(pPix) - (pPix)->screen_x)
|
||||||
|
|
13
fb/fbpict.c
13
fb/fbpict.c
|
@ -345,6 +345,11 @@ static pixman_image_t *image_from_pict_internal(PicturePtr pict, Bool has_clip,
|
||||||
int *xoff, int *yoff,
|
int *xoff, int *yoff,
|
||||||
Bool is_alpha_map);
|
Bool is_alpha_map);
|
||||||
|
|
||||||
|
static void image_destroy(pixman_image_t *image, void *data)
|
||||||
|
{
|
||||||
|
fbFinishAccess((DrawablePtr)data);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
|
set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
|
||||||
int *xoff, int *yoff, Bool is_alpha_map)
|
int *xoff, int *yoff, Bool is_alpha_map)
|
||||||
|
@ -429,6 +434,10 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pict->pDrawable)
|
||||||
|
pixman_image_set_destroy_function(image, &image_destroy,
|
||||||
|
pict->pDrawable);
|
||||||
|
|
||||||
pixman_image_set_filter(image, filter,
|
pixman_image_set_filter(image, filter,
|
||||||
(pixman_fixed_t *) pict->filter_params,
|
(pixman_fixed_t *) pict->filter_params,
|
||||||
pict->filter_nparams);
|
pict->filter_nparams);
|
||||||
|
@ -481,8 +490,8 @@ image_from_pict(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
|
||||||
void
|
void
|
||||||
free_pixman_pict(PicturePtr pict, pixman_image_t * image)
|
free_pixman_pict(PicturePtr pict, pixman_image_t * image)
|
||||||
{
|
{
|
||||||
if (image && pixman_image_unref(image) && pict->pDrawable)
|
if (image)
|
||||||
fbFinishAccess(pict->pDrawable);
|
pixman_image_unref(image);
|
||||||
}
|
}
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
|
|
|
@ -207,7 +207,6 @@ glamor_create_pixmap(ScreenPtr screen, int w, int h, int depth,
|
||||||
|
|
||||||
if (fbo == NULL) {
|
if (fbo == NULL) {
|
||||||
fbDestroyPixmap(pixmap);
|
fbDestroyPixmap(pixmap);
|
||||||
free(pixmap_priv);
|
|
||||||
return fbCreatePixmap(screen, w, h, depth, usage);
|
return fbCreatePixmap(screen, w, h, depth, usage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -305,6 +304,35 @@ glamor_create_screen_resources(ScreenPtr screen)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Bool
|
||||||
|
glamor_check_instruction_count(int gl_version)
|
||||||
|
{
|
||||||
|
GLint max_native_alu_instructions;
|
||||||
|
|
||||||
|
/* Avoid using glamor if the reported instructions limit is too low,
|
||||||
|
* as this would cause glamor to fallback on sw due to large shaders
|
||||||
|
* which ends up being unbearably slow.
|
||||||
|
*/
|
||||||
|
if (gl_version < 30) {
|
||||||
|
if (!epoxy_has_gl_extension("GL_ARB_fragment_program")) {
|
||||||
|
ErrorF("GL_ARB_fragment_program required\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
glGetProgramivARB(GL_FRAGMENT_PROGRAM_ARB,
|
||||||
|
GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB,
|
||||||
|
&max_native_alu_instructions);
|
||||||
|
if (max_native_alu_instructions < GLAMOR_MIN_ALU_INSTRUCTIONS) {
|
||||||
|
LogMessage(X_WARNING,
|
||||||
|
"glamor requires at least %d instructions (%d reported)\n",
|
||||||
|
GLAMOR_MIN_ALU_INSTRUCTIONS, max_native_alu_instructions);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/** Set up glamor for an already-configured GL context. */
|
/** Set up glamor for an already-configured GL context. */
|
||||||
Bool
|
Bool
|
||||||
glamor_init(ScreenPtr screen, unsigned int flags)
|
glamor_init(ScreenPtr screen, unsigned int flags)
|
||||||
|
@ -350,6 +378,20 @@ glamor_init(ScreenPtr screen, unsigned int flags)
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
glamor_priv->saved_procs.close_screen = screen->CloseScreen;
|
||||||
|
screen->CloseScreen = glamor_close_screen;
|
||||||
|
|
||||||
|
/* If we are using egl screen, call egl screen init to
|
||||||
|
* register correct close screen function. */
|
||||||
|
if (flags & GLAMOR_USE_EGL_SCREEN) {
|
||||||
|
glamor_egl_screen_init(screen, &glamor_priv->ctx);
|
||||||
|
} else {
|
||||||
|
if (!glamor_glx_screen_init(&glamor_priv->ctx))
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
glamor_make_current(glamor_priv);
|
||||||
|
|
||||||
if (epoxy_is_desktop_gl())
|
if (epoxy_is_desktop_gl())
|
||||||
glamor_priv->gl_flavor = GLAMOR_GL_DESKTOP;
|
glamor_priv->gl_flavor = GLAMOR_GL_DESKTOP;
|
||||||
else
|
else
|
||||||
|
@ -384,6 +426,9 @@ glamor_init(ScreenPtr screen, unsigned int flags)
|
||||||
ErrorF("Require OpenGL version 2.1 or later.\n");
|
ErrorF("Require OpenGL version 2.1 or later.\n");
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!glamor_check_instruction_count(gl_version))
|
||||||
|
goto fail;
|
||||||
} else {
|
} else {
|
||||||
if (gl_version < 20) {
|
if (gl_version < 20) {
|
||||||
ErrorF("Require Open GLES2.0 or later.\n");
|
ErrorF("Require Open GLES2.0 or later.\n");
|
||||||
|
@ -411,6 +456,14 @@ glamor_init(ScreenPtr screen, unsigned int flags)
|
||||||
epoxy_has_gl_extension("GL_ARB_buffer_storage");
|
epoxy_has_gl_extension("GL_ARB_buffer_storage");
|
||||||
glamor_priv->has_nv_texture_barrier =
|
glamor_priv->has_nv_texture_barrier =
|
||||||
epoxy_has_gl_extension("GL_NV_texture_barrier");
|
epoxy_has_gl_extension("GL_NV_texture_barrier");
|
||||||
|
glamor_priv->has_unpack_subimage =
|
||||||
|
glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP ||
|
||||||
|
epoxy_gl_version() >= 30 ||
|
||||||
|
epoxy_has_gl_extension("GL_EXT_unpack_subimage");
|
||||||
|
glamor_priv->has_pack_subimage =
|
||||||
|
glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP ||
|
||||||
|
epoxy_gl_version() >= 30 ||
|
||||||
|
epoxy_has_gl_extension("GL_NV_pack_subimage");
|
||||||
|
|
||||||
glGetIntegerv(GL_MAX_RENDERBUFFER_SIZE, &glamor_priv->max_fbo_size);
|
glGetIntegerv(GL_MAX_RENDERBUFFER_SIZE, &glamor_priv->max_fbo_size);
|
||||||
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &glamor_priv->max_fbo_size);
|
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &glamor_priv->max_fbo_size);
|
||||||
|
@ -423,18 +476,6 @@ glamor_init(ScreenPtr screen, unsigned int flags)
|
||||||
|
|
||||||
glamor_set_debug_level(&glamor_debug_level);
|
glamor_set_debug_level(&glamor_debug_level);
|
||||||
|
|
||||||
glamor_priv->saved_procs.close_screen = screen->CloseScreen;
|
|
||||||
screen->CloseScreen = glamor_close_screen;
|
|
||||||
|
|
||||||
/* If we are using egl screen, call egl screen init to
|
|
||||||
* register correct close screen function. */
|
|
||||||
if (flags & GLAMOR_USE_EGL_SCREEN) {
|
|
||||||
glamor_egl_screen_init(screen, &glamor_priv->ctx);
|
|
||||||
} else {
|
|
||||||
if (!glamor_glx_screen_init(&glamor_priv->ctx))
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
glamor_priv->saved_procs.create_screen_resources =
|
glamor_priv->saved_procs.create_screen_resources =
|
||||||
screen->CreateScreenResources;
|
screen->CreateScreenResources;
|
||||||
screen->CreateScreenResources = glamor_create_screen_resources;
|
screen->CreateScreenResources = glamor_create_screen_resources;
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
|
|
||||||
#include "glamor_priv.h"
|
#include "glamor_priv.h"
|
||||||
|
|
||||||
const Bool
|
Bool
|
||||||
glamor_get_drawable_location(const DrawablePtr drawable)
|
glamor_get_drawable_location(const DrawablePtr drawable)
|
||||||
{
|
{
|
||||||
PixmapPtr pixmap = glamor_get_drawable_pixmap(drawable);
|
PixmapPtr pixmap = glamor_get_drawable_pixmap(drawable);
|
||||||
|
|
|
@ -597,6 +597,7 @@ glamor_egl_close_screen(ScreenPtr screen)
|
||||||
return screen->CloseScreen(screen);
|
return screen->CloseScreen(screen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef DRI3
|
||||||
static int
|
static int
|
||||||
glamor_dri3_open_client(ClientPtr client,
|
glamor_dri3_open_client(ClientPtr client,
|
||||||
ScreenPtr screen,
|
ScreenPtr screen,
|
||||||
|
@ -653,12 +654,12 @@ static dri3_screen_info_rec glamor_dri3_info = {
|
||||||
.pixmap_from_fd = glamor_pixmap_from_fd,
|
.pixmap_from_fd = glamor_pixmap_from_fd,
|
||||||
.fd_from_pixmap = glamor_fd_from_pixmap,
|
.fd_from_pixmap = glamor_fd_from_pixmap,
|
||||||
};
|
};
|
||||||
|
#endif /* DRI3 */
|
||||||
|
|
||||||
void
|
void
|
||||||
glamor_egl_screen_init(ScreenPtr screen, struct glamor_context *glamor_ctx)
|
glamor_egl_screen_init(ScreenPtr screen, struct glamor_context *glamor_ctx)
|
||||||
{
|
{
|
||||||
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
|
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
|
||||||
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
|
|
||||||
struct glamor_egl_screen_private *glamor_egl =
|
struct glamor_egl_screen_private *glamor_egl =
|
||||||
glamor_egl_get_screen_private(scrn);
|
glamor_egl_get_screen_private(scrn);
|
||||||
|
|
||||||
|
@ -670,7 +671,9 @@ glamor_egl_screen_init(ScreenPtr screen, struct glamor_context *glamor_ctx)
|
||||||
|
|
||||||
glamor_ctx->make_current = glamor_egl_make_current;
|
glamor_ctx->make_current = glamor_egl_make_current;
|
||||||
|
|
||||||
|
#ifdef DRI3
|
||||||
if (glamor_egl->dri3_capable) {
|
if (glamor_egl->dri3_capable) {
|
||||||
|
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
|
||||||
/* Tell the core that we have the interfaces for import/export
|
/* Tell the core that we have the interfaces for import/export
|
||||||
* of pixmaps.
|
* of pixmaps.
|
||||||
*/
|
*/
|
||||||
|
@ -693,6 +696,7 @@ glamor_egl_screen_init(ScreenPtr screen, struct glamor_context *glamor_ctx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -348,7 +348,6 @@ _glamor_create_tex(glamor_screen_private *glamor_priv,
|
||||||
glamor_make_current(glamor_priv);
|
glamor_make_current(glamor_priv);
|
||||||
glGenTextures(1, &tex);
|
glGenTextures(1, &tex);
|
||||||
glBindTexture(GL_TEXTURE_2D, tex);
|
glBindTexture(GL_TEXTURE_2D, tex);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, format, w, h, 0,
|
glTexImage2D(GL_TEXTURE_2D, 0, format, w, h, 0,
|
||||||
|
|
|
@ -45,6 +45,7 @@ glamor_font_get(ScreenPtr screen, FontPtr font)
|
||||||
unsigned char c[2];
|
unsigned char c[2];
|
||||||
CharInfoPtr glyph;
|
CharInfoPtr glyph;
|
||||||
unsigned long count;
|
unsigned long count;
|
||||||
|
char *bits;
|
||||||
|
|
||||||
if (glamor_priv->glsl_version < 130)
|
if (glamor_priv->glsl_version < 130)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -62,8 +63,6 @@ glamor_font_get(ScreenPtr screen, FontPtr font)
|
||||||
if (glamor_font->realized)
|
if (glamor_font->realized)
|
||||||
return glamor_font;
|
return glamor_font;
|
||||||
|
|
||||||
glamor_font->realized = TRUE;
|
|
||||||
|
|
||||||
/* Figure out how many glyphs are in the font */
|
/* Figure out how many glyphs are in the font */
|
||||||
num_cols = font->info.lastCol - font->info.firstCol + 1;
|
num_cols = font->info.lastCol - font->info.firstCol + 1;
|
||||||
num_rows = font->info.lastRow - font->info.firstRow + 1;
|
num_rows = font->info.lastRow - font->info.firstRow + 1;
|
||||||
|
@ -81,6 +80,10 @@ glamor_font_get(ScreenPtr screen, FontPtr font)
|
||||||
overall_width = glyph_width_bytes * num_cols;
|
overall_width = glyph_width_bytes * num_cols;
|
||||||
overall_height = glyph_height * num_rows;
|
overall_height = glyph_height * num_rows;
|
||||||
|
|
||||||
|
bits = malloc(overall_width * overall_height);
|
||||||
|
if (!bits)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
/* Check whether the font has a default character */
|
/* Check whether the font has a default character */
|
||||||
c[0] = font->info.lastRow + 1;
|
c[0] = font->info.lastRow + 1;
|
||||||
c[1] = font->info.lastCol + 1;
|
c[1] = font->info.lastCol + 1;
|
||||||
|
@ -97,16 +100,9 @@ glamor_font_get(ScreenPtr screen, FontPtr font)
|
||||||
glActiveTexture(GL_TEXTURE0);
|
glActiveTexture(GL_TEXTURE0);
|
||||||
glBindTexture(GL_TEXTURE_2D, glamor_font->texture_id);
|
glBindTexture(GL_TEXTURE_2D, glamor_font->texture_id);
|
||||||
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
|
||||||
/* Allocate storage */
|
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_R8UI, overall_width, overall_height,
|
|
||||||
0, GL_RED_INTEGER, GL_UNSIGNED_BYTE, NULL);
|
|
||||||
|
|
||||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
|
|
||||||
|
|
||||||
/* Paint all of the glyphs */
|
/* Paint all of the glyphs */
|
||||||
for (row = 0; row < num_rows; row++) {
|
for (row = 0; row < num_rows; row++) {
|
||||||
for (col = 0; col < num_cols; col++) {
|
for (col = 0; col < num_cols; col++) {
|
||||||
|
@ -115,13 +111,29 @@ glamor_font_get(ScreenPtr screen, FontPtr font)
|
||||||
|
|
||||||
(*font->get_glyphs)(font, 1, c, TwoD16Bit, &count, &glyph);
|
(*font->get_glyphs)(font, 1, c, TwoD16Bit, &count, &glyph);
|
||||||
|
|
||||||
if (count)
|
if (count) {
|
||||||
glTexSubImage2D(GL_TEXTURE_2D, 0, col * glyph_width_bytes, row * glyph_height,
|
char *dst = bits + row * glyph_height * overall_width +
|
||||||
GLYPHWIDTHBYTES(glyph), GLYPHHEIGHTPIXELS(glyph),
|
col * glyph_width_bytes;
|
||||||
GL_RED_INTEGER, GL_UNSIGNED_BYTE, glyph->bits);
|
char *src = glyph->bits;
|
||||||
|
unsigned y;
|
||||||
|
|
||||||
|
for (y = 0; y < GLYPHHEIGHTPIXELS(glyph); y++) {
|
||||||
|
memcpy(dst, src, GLYPHWIDTHBYTES(glyph));
|
||||||
|
dst += overall_width;
|
||||||
|
src += GLYPHWIDTHBYTESPADDED(glyph);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_R8UI, overall_width, overall_height,
|
||||||
|
0, GL_RED_INTEGER, GL_UNSIGNED_BYTE, bits);
|
||||||
|
|
||||||
|
free(bits);
|
||||||
|
|
||||||
|
glamor_font->realized = TRUE;
|
||||||
|
|
||||||
return glamor_font;
|
return glamor_font;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -88,7 +88,7 @@ static void
|
||||||
glamor_put_image_bail(DrawablePtr drawable, GCPtr gc, int depth, int x, int y,
|
glamor_put_image_bail(DrawablePtr drawable, GCPtr gc, int depth, int x, int y,
|
||||||
int w, int h, int leftPad, int format, char *bits)
|
int w, int h, int leftPad, int format, char *bits)
|
||||||
{
|
{
|
||||||
if (glamor_prepare_access(drawable, GLAMOR_ACCESS_RW))
|
if (glamor_prepare_access_box(drawable, GLAMOR_ACCESS_RW, x, y, w, h))
|
||||||
fbPutImage(drawable, gc, depth, x, y, w, h, leftPad, format, bits);
|
fbPutImage(drawable, gc, depth, x, y, w, h, leftPad, format, bits);
|
||||||
glamor_finish_access(drawable);
|
glamor_finish_access(drawable);
|
||||||
}
|
}
|
||||||
|
@ -150,7 +150,7 @@ static void
|
||||||
glamor_get_image_bail(DrawablePtr drawable, int x, int y, int w, int h,
|
glamor_get_image_bail(DrawablePtr drawable, int x, int y, int w, int h,
|
||||||
unsigned int format, unsigned long plane_mask, char *d)
|
unsigned int format, unsigned long plane_mask, char *d)
|
||||||
{
|
{
|
||||||
if (glamor_prepare_access(drawable, GLAMOR_ACCESS_RO))
|
if (glamor_prepare_access_box(drawable, GLAMOR_ACCESS_RO, x, y, w, h))
|
||||||
fbGetImage(drawable, x, y, w, h, format, plane_mask, d);
|
fbGetImage(drawable, x, y, w, h, format, plane_mask, d);
|
||||||
glamor_finish_access(drawable);
|
glamor_finish_access(drawable);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1046,6 +1046,15 @@ glamor_composite_largepixmap_region(CARD8 op,
|
||||||
int source_repeat_type = 0, mask_repeat_type = 0;
|
int source_repeat_type = 0, mask_repeat_type = 0;
|
||||||
int ok = TRUE;
|
int ok = TRUE;
|
||||||
|
|
||||||
|
if (source_pixmap_priv == dest_pixmap_priv) {
|
||||||
|
glamor_fallback("source and dest pixmaps are the same\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (mask_pixmap_priv == dest_pixmap_priv) {
|
||||||
|
glamor_fallback("mask and dest pixmaps are the same\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
if (source->repeat)
|
if (source->repeat)
|
||||||
source_repeat_type = source->repeatType;
|
source_repeat_type = source->repeatType;
|
||||||
else
|
else
|
||||||
|
|
|
@ -717,7 +717,6 @@ __glamor_upload_pixmap_to_texture(PixmapPtr pixmap, unsigned int *tex,
|
||||||
}
|
}
|
||||||
|
|
||||||
glBindTexture(GL_TEXTURE_2D, *tex);
|
glBindTexture(GL_TEXTURE_2D, *tex);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
|
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
|
||||||
|
|
|
@ -45,6 +45,8 @@ glamor_prep_pixmap_box(PixmapPtr pixmap, glamor_access_t access, BoxPtr box)
|
||||||
if (!GLAMOR_PIXMAP_PRIV_HAS_FBO(priv))
|
if (!GLAMOR_PIXMAP_PRIV_HAS_FBO(priv))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
glamor_make_current(glamor_priv);
|
||||||
|
|
||||||
RegionInit(®ion, box, 1);
|
RegionInit(®ion, box, 1);
|
||||||
|
|
||||||
/* See if it's already mapped */
|
/* See if it's already mapped */
|
||||||
|
|
|
@ -236,6 +236,8 @@ typedef struct glamor_screen_private {
|
||||||
int has_buffer_storage;
|
int has_buffer_storage;
|
||||||
int has_khr_debug;
|
int has_khr_debug;
|
||||||
int has_nv_texture_barrier;
|
int has_nv_texture_barrier;
|
||||||
|
int has_pack_subimage;
|
||||||
|
int has_unpack_subimage;
|
||||||
int max_fbo_size;
|
int max_fbo_size;
|
||||||
int has_rw_pbo;
|
int has_rw_pbo;
|
||||||
|
|
||||||
|
@ -669,7 +671,7 @@ glamor_pixmap_fbo *glamor_create_fbo_array(glamor_screen_private *glamor_priv,
|
||||||
void glamor_init_finish_access_shaders(ScreenPtr screen);
|
void glamor_init_finish_access_shaders(ScreenPtr screen);
|
||||||
void glamor_fini_finish_access_shaders(ScreenPtr screen);
|
void glamor_fini_finish_access_shaders(ScreenPtr screen);
|
||||||
|
|
||||||
const Bool glamor_get_drawable_location(const DrawablePtr drawable);
|
Bool glamor_get_drawable_location(const DrawablePtr drawable);
|
||||||
void glamor_get_drawable_deltas(DrawablePtr drawable, PixmapPtr pixmap,
|
void glamor_get_drawable_deltas(DrawablePtr drawable, PixmapPtr pixmap,
|
||||||
int *x, int *y);
|
int *x, int *y);
|
||||||
GLint glamor_compile_glsl_prog(GLenum type, const char *source);
|
GLint glamor_compile_glsl_prog(GLenum type, const char *source);
|
||||||
|
@ -1095,4 +1097,6 @@ void glamor_xv_render(glamor_port_private *port_priv);
|
||||||
|
|
||||||
#include "glamor_font.h"
|
#include "glamor_font.h"
|
||||||
|
|
||||||
|
#define GLAMOR_MIN_ALU_INSTRUCTIONS 128 /* Minimum required number of native ALU instructions */
|
||||||
|
|
||||||
#endif /* GLAMOR_PRIV_H */
|
#endif /* GLAMOR_PRIV_H */
|
||||||
|
|
|
@ -343,9 +343,6 @@ glamor_build_program(ScreenPtr screen,
|
||||||
prog->dash_uniform = glamor_get_uniform(prog, glamor_program_location_dash, "dash");
|
prog->dash_uniform = glamor_get_uniform(prog, glamor_program_location_dash, "dash");
|
||||||
prog->dash_length_uniform = glamor_get_uniform(prog, glamor_program_location_dash, "dash_length");
|
prog->dash_length_uniform = glamor_get_uniform(prog, glamor_program_location_dash, "dash_length");
|
||||||
|
|
||||||
if (glGetError() != GL_NO_ERROR)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
free(version_string);
|
free(version_string);
|
||||||
free(fs_vars);
|
free(fs_vars);
|
||||||
free(vs_vars);
|
free(vs_vars);
|
||||||
|
|
|
@ -1400,6 +1400,7 @@ glamor_composite_clipped_region(CARD8 op,
|
||||||
{
|
{
|
||||||
ScreenPtr screen = dest->pDrawable->pScreen;
|
ScreenPtr screen = dest->pDrawable->pScreen;
|
||||||
PixmapPtr source_pixmap = NULL, mask_pixmap = NULL;
|
PixmapPtr source_pixmap = NULL, mask_pixmap = NULL;
|
||||||
|
PixmapPtr dest_pixmap = glamor_get_drawable_pixmap(dest->pDrawable);
|
||||||
PicturePtr temp_src = source, temp_mask = mask;
|
PicturePtr temp_src = source, temp_mask = mask;
|
||||||
glamor_pixmap_private *temp_src_priv = source_pixmap_priv;
|
glamor_pixmap_private *temp_src_priv = source_pixmap_priv;
|
||||||
glamor_pixmap_private *temp_mask_priv = mask_pixmap_priv;
|
glamor_pixmap_private *temp_mask_priv = mask_pixmap_priv;
|
||||||
|
@ -1502,7 +1503,14 @@ glamor_composite_clipped_region(CARD8 op,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*XXXXX, self copy? */
|
if (source_pixmap == dest_pixmap) {
|
||||||
|
glamor_fallback("source and dest pixmaps are the same\n");
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
if (mask_pixmap == dest_pixmap) {
|
||||||
|
glamor_fallback("mask and dest pixmaps are the same\n");
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
x_dest += dest->pDrawable->x;
|
x_dest += dest->pDrawable->x;
|
||||||
y_dest += dest->pDrawable->y;
|
y_dest += dest->pDrawable->y;
|
||||||
|
|
|
@ -226,7 +226,7 @@ glamor_get_spans_gl(DrawablePtr drawable, int wmax,
|
||||||
BoxPtr box = glamor_pixmap_box_at(pixmap_priv, box_x, box_y);
|
BoxPtr box = glamor_pixmap_box_at(pixmap_priv, box_x, box_y);
|
||||||
glamor_pixmap_fbo *fbo = glamor_pixmap_fbo_at(pixmap_priv, box_x, box_y);
|
glamor_pixmap_fbo *fbo = glamor_pixmap_fbo_at(pixmap_priv, box_x, box_y);
|
||||||
|
|
||||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo->fb);
|
glBindFramebuffer(GL_FRAMEBUFFER, fbo->fb);
|
||||||
glPixelStorei(GL_PACK_ALIGNMENT, 4);
|
glPixelStorei(GL_PACK_ALIGNMENT, 4);
|
||||||
|
|
||||||
d = dst;
|
d = dst;
|
||||||
|
|
|
@ -94,8 +94,10 @@ glamor_sync_init(ScreenPtr screen)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_XSHMFENCE
|
||||||
if (!miSyncShmScreenInit(screen))
|
if (!miSyncShmScreenInit(screen))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
#endif
|
||||||
|
|
||||||
screen_funcs = miSyncGetScreenFuncs(screen);
|
screen_funcs = miSyncGetScreenFuncs(screen);
|
||||||
glamor->saved_procs.sync_screen_funcs.CreateFence = screen_funcs->CreateFence;
|
glamor->saved_procs.sync_screen_funcs.CreateFence = screen_funcs->CreateFence;
|
||||||
|
|
|
@ -73,7 +73,9 @@ glamor_upload_boxes(PixmapPtr pixmap, BoxPtr in_boxes, int in_nbox,
|
||||||
glamor_make_current(glamor_priv);
|
glamor_make_current(glamor_priv);
|
||||||
|
|
||||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
|
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
|
||||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, byte_stride / bytes_per_pixel);
|
|
||||||
|
if (glamor_priv->has_unpack_subimage)
|
||||||
|
glPixelStorei(GL_UNPACK_ROW_LENGTH, byte_stride / bytes_per_pixel);
|
||||||
|
|
||||||
glamor_pixmap_loop(priv, box_x, box_y) {
|
glamor_pixmap_loop(priv, box_x, box_y) {
|
||||||
BoxPtr box = glamor_pixmap_box_at(priv, box_x, box_y);
|
BoxPtr box = glamor_pixmap_box_at(priv, box_x, box_y);
|
||||||
|
@ -92,25 +94,34 @@ glamor_upload_boxes(PixmapPtr pixmap, BoxPtr in_boxes, int in_nbox,
|
||||||
int y1 = MAX(boxes->y1 + dy_dst, box->y1);
|
int y1 = MAX(boxes->y1 + dy_dst, box->y1);
|
||||||
int y2 = MIN(boxes->y2 + dy_dst, box->y2);
|
int y2 = MIN(boxes->y2 + dy_dst, box->y2);
|
||||||
|
|
||||||
|
size_t ofs = (y1 - dy_dst + dy_src) * byte_stride;
|
||||||
|
ofs += (x1 - dx_dst + dx_src) * bytes_per_pixel;
|
||||||
|
|
||||||
boxes++;
|
boxes++;
|
||||||
|
|
||||||
if (x2 <= x1 || y2 <= y1)
|
if (x2 <= x1 || y2 <= y1)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
glPixelStorei(GL_UNPACK_SKIP_ROWS, y1 - dy_dst + dy_src);
|
if (glamor_priv->has_unpack_subimage ||
|
||||||
glPixelStorei(GL_UNPACK_SKIP_PIXELS, x1 - dx_dst + dx_src);
|
x2 - x1 == byte_stride / bytes_per_pixel) {
|
||||||
|
glTexSubImage2D(GL_TEXTURE_2D, 0,
|
||||||
glTexSubImage2D(GL_TEXTURE_2D, 0,
|
x1 - box->x1, y1 - box->y1,
|
||||||
x1 - box->x1, y1 - box->y1,
|
x2 - x1, y2 - y1,
|
||||||
x2 - x1, y2 - y1,
|
format, type,
|
||||||
format, type,
|
bits + ofs);
|
||||||
bits);
|
} else {
|
||||||
|
for (; y1 < y2; y1++, ofs += byte_stride)
|
||||||
|
glTexSubImage2D(GL_TEXTURE_2D, 0,
|
||||||
|
x1 - box->x1, y1 - box->y1,
|
||||||
|
x2 - x1, 1,
|
||||||
|
format, type,
|
||||||
|
bits + ofs);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
|
if (glamor_priv->has_unpack_subimage)
|
||||||
glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);
|
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
|
||||||
glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -166,7 +177,8 @@ glamor_download_boxes(PixmapPtr pixmap, BoxPtr in_boxes, int in_nbox,
|
||||||
glamor_make_current(glamor_priv);
|
glamor_make_current(glamor_priv);
|
||||||
|
|
||||||
glPixelStorei(GL_PACK_ALIGNMENT, 4);
|
glPixelStorei(GL_PACK_ALIGNMENT, 4);
|
||||||
glPixelStorei(GL_PACK_ROW_LENGTH, byte_stride / bytes_per_pixel);
|
if (glamor_priv->has_pack_subimage)
|
||||||
|
glPixelStorei(GL_PACK_ROW_LENGTH, byte_stride / bytes_per_pixel);
|
||||||
|
|
||||||
glamor_pixmap_loop(priv, box_x, box_y) {
|
glamor_pixmap_loop(priv, box_x, box_y) {
|
||||||
BoxPtr box = glamor_pixmap_box_at(priv, box_x, box_y);
|
BoxPtr box = glamor_pixmap_box_at(priv, box_x, box_y);
|
||||||
|
@ -174,7 +186,7 @@ glamor_download_boxes(PixmapPtr pixmap, BoxPtr in_boxes, int in_nbox,
|
||||||
BoxPtr boxes = in_boxes;
|
BoxPtr boxes = in_boxes;
|
||||||
int nbox = in_nbox;
|
int nbox = in_nbox;
|
||||||
|
|
||||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo->fb);
|
glBindFramebuffer(GL_FRAMEBUFFER, fbo->fb);
|
||||||
|
|
||||||
while (nbox--) {
|
while (nbox--) {
|
||||||
|
|
||||||
|
@ -183,20 +195,25 @@ glamor_download_boxes(PixmapPtr pixmap, BoxPtr in_boxes, int in_nbox,
|
||||||
int x2 = MIN(boxes->x2 + dx_src, box->x2);
|
int x2 = MIN(boxes->x2 + dx_src, box->x2);
|
||||||
int y1 = MAX(boxes->y1 + dy_src, box->y1);
|
int y1 = MAX(boxes->y1 + dy_src, box->y1);
|
||||||
int y2 = MIN(boxes->y2 + dy_src, box->y2);
|
int y2 = MIN(boxes->y2 + dy_src, box->y2);
|
||||||
|
size_t ofs = (y1 - dy_src + dy_dst) * byte_stride;
|
||||||
|
ofs += (x1 - dx_src + dx_dst) * bytes_per_pixel;
|
||||||
|
|
||||||
boxes++;
|
boxes++;
|
||||||
|
|
||||||
if (x2 <= x1 || y2 <= y1)
|
if (x2 <= x1 || y2 <= y1)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
glPixelStorei(GL_PACK_SKIP_PIXELS, x1 - dx_src + dx_dst);
|
if (glamor_priv->has_pack_subimage ||
|
||||||
glPixelStorei(GL_PACK_SKIP_ROWS, y1 - dy_src + dy_dst);
|
x2 - x1 == byte_stride / bytes_per_pixel) {
|
||||||
glReadPixels(x1 - box->x1, y1 - box->y1, x2 - x1, y2 - y1, format, type, bits);
|
glReadPixels(x1 - box->x1, y1 - box->y1, x2 - x1, y2 - y1, format, type, bits + ofs);
|
||||||
|
} else {
|
||||||
|
for (; y1 < y2; y1++, ofs += byte_stride)
|
||||||
|
glReadPixels(x1 - box->x1, y1 - box->y1, x2 - x1, 1, format, type, bits + ofs);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
glPixelStorei(GL_PACK_ROW_LENGTH, 0);
|
if (glamor_priv->has_pack_subimage)
|
||||||
glPixelStorei(GL_PACK_SKIP_ROWS, 0);
|
glPixelStorei(GL_PACK_ROW_LENGTH, 0);
|
||||||
glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -87,6 +87,9 @@ __glXDisp_CreateContextAttribsARB(__GLXclientState * cl, GLbyte * pc)
|
||||||
int minor_version = 0;
|
int minor_version = 0;
|
||||||
uint32_t flags = 0;
|
uint32_t flags = 0;
|
||||||
uint32_t render_type = GLX_RGBA_TYPE;
|
uint32_t render_type = GLX_RGBA_TYPE;
|
||||||
|
#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB
|
||||||
|
uint32_t flush = GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB;
|
||||||
|
#endif
|
||||||
__GLXcontext *ctx = NULL;
|
__GLXcontext *ctx = NULL;
|
||||||
__GLXcontext *shareCtx = NULL;
|
__GLXcontext *shareCtx = NULL;
|
||||||
__GLXscreen *glxScreen;
|
__GLXscreen *glxScreen;
|
||||||
|
@ -194,6 +197,15 @@ __glXDisp_CreateContextAttribsARB(__GLXclientState * cl, GLbyte * pc)
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB
|
||||||
|
case GLX_CONTEXT_RELEASE_BEHAVIOR_ARB:
|
||||||
|
flush = attribs[2 * i + 1];
|
||||||
|
if (flush != GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB
|
||||||
|
&& flush != GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB)
|
||||||
|
return BadValue;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return BadValue;
|
return BadValue;
|
||||||
}
|
}
|
||||||
|
@ -333,6 +345,9 @@ __glXDisp_CreateContextAttribsARB(__GLXclientState * cl, GLbyte * pc)
|
||||||
ctx->drawPriv = NULL;
|
ctx->drawPriv = NULL;
|
||||||
ctx->readPriv = NULL;
|
ctx->readPriv = NULL;
|
||||||
ctx->resetNotificationStrategy = reset;
|
ctx->resetNotificationStrategy = reset;
|
||||||
|
#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB
|
||||||
|
ctx->releaseBehavior = flush;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Add the new context to the various global tables of GLX contexts.
|
/* Add the new context to the various global tables of GLX contexts.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -72,6 +72,7 @@ struct extension_info {
|
||||||
static const struct extension_info known_glx_extensions[] = {
|
static const struct extension_info known_glx_extensions[] = {
|
||||||
/* GLX_ARB_get_proc_address is implemented on the client. */
|
/* GLX_ARB_get_proc_address is implemented on the client. */
|
||||||
/* *INDENT-OFF* */
|
/* *INDENT-OFF* */
|
||||||
|
{ GLX(ARB_context_flush_control), VER(0,0), N, },
|
||||||
{ GLX(ARB_create_context), VER(0,0), N, },
|
{ GLX(ARB_create_context), VER(0,0), N, },
|
||||||
{ GLX(ARB_create_context_profile), VER(0,0), N, },
|
{ GLX(ARB_create_context_profile), VER(0,0), N, },
|
||||||
{ GLX(ARB_create_context_robustness), VER(0,0), N, },
|
{ GLX(ARB_create_context_robustness), VER(0,0), N, },
|
||||||
|
|
|
@ -36,7 +36,8 @@
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
/* GLX_ARB_get_proc_address is implemented on the client. */
|
/* GLX_ARB_get_proc_address is implemented on the client. */
|
||||||
ARB_create_context_bit = 0,
|
ARB_context_flush_control_bit = 0,
|
||||||
|
ARB_create_context_bit,
|
||||||
ARB_create_context_profile_bit,
|
ARB_create_context_profile_bit,
|
||||||
ARB_create_context_robustness_bit,
|
ARB_create_context_robustness_bit,
|
||||||
ARB_fbconfig_float_bit,
|
ARB_fbconfig_float_bit,
|
||||||
|
|
|
@ -334,6 +334,19 @@ DoCreateContext(__GLXclientState * cl, GLXContextID gcId,
|
||||||
*/
|
*/
|
||||||
glxc->resetNotificationStrategy = GLX_NO_RESET_NOTIFICATION_ARB;
|
glxc->resetNotificationStrategy = GLX_NO_RESET_NOTIFICATION_ARB;
|
||||||
|
|
||||||
|
#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB
|
||||||
|
/* The GLX_ARB_context_flush_control spec says:
|
||||||
|
*
|
||||||
|
* "The default value [for GLX_CONTEXT_RELEASE_BEHAVIOR] is
|
||||||
|
* CONTEXT_RELEASE_BEHAVIOR_FLUSH, and may in some cases be changed
|
||||||
|
* using platform-specific context creation extensions."
|
||||||
|
*
|
||||||
|
* Without using glXCreateContextAttribsARB, there is no way to specify a
|
||||||
|
* non-default release behavior.
|
||||||
|
*/
|
||||||
|
glxc->releaseBehavior = GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Add the new context to the various global tables of GLX contexts.
|
/* Add the new context to the various global tables of GLX contexts.
|
||||||
*/
|
*/
|
||||||
if (!__glXAddContext(glxc)) {
|
if (!__glXAddContext(glxc)) {
|
||||||
|
@ -626,7 +639,12 @@ DoMakeCurrent(__GLXclientState * cl,
|
||||||
/*
|
/*
|
||||||
** Flush the previous context if needed.
|
** Flush the previous context if needed.
|
||||||
*/
|
*/
|
||||||
if (prevglxc->hasUnflushedCommands) {
|
Bool need_flush = GL_TRUE;
|
||||||
|
#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB
|
||||||
|
if (prevglxc->releaseBehavior == GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB)
|
||||||
|
need_flush = GL_FALSE;
|
||||||
|
#endif
|
||||||
|
if (prevglxc->hasUnflushedCommands && need_flush) {
|
||||||
if (__glXForceCurrent(cl, tag, (int *) &error)) {
|
if (__glXForceCurrent(cl, tag, (int *) &error)) {
|
||||||
glFlush();
|
glFlush();
|
||||||
prevglxc->hasUnflushedCommands = GL_FALSE;
|
prevglxc->hasUnflushedCommands = GL_FALSE;
|
||||||
|
@ -2164,7 +2182,7 @@ __glXDisp_RenderLarge(__GLXclientState * cl, GLbyte * pc)
|
||||||
__GLXrenderSizeData entry;
|
__GLXrenderSizeData entry;
|
||||||
int extra = 0;
|
int extra = 0;
|
||||||
int left = (req->length << 2) - sz_xGLXRenderLargeReq;
|
int left = (req->length << 2) - sz_xGLXRenderLargeReq;
|
||||||
size_t cmdlen;
|
int cmdlen;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -108,6 +108,11 @@ struct __GLXcontext {
|
||||||
*/
|
*/
|
||||||
GLenum resetNotificationStrategy;
|
GLenum resetNotificationStrategy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Context release behavior
|
||||||
|
*/
|
||||||
|
GLenum releaseBehavior;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Buffers for feedback and selection.
|
** Buffers for feedback and selection.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -921,6 +921,13 @@ initializeExtensions(__GLXDRIscreen * screen)
|
||||||
"AIGLX: enabled GLX_ARB_create_context_robustness\n");
|
"AIGLX: enabled GLX_ARB_create_context_robustness\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __DRI2_FLUSH_CONTROL
|
||||||
|
if (strcmp(extensions[i]->name, __DRI2_FLUSH_CONTROL) == 0) {
|
||||||
|
__glXEnableExtension(screen->glx_enable_bits,
|
||||||
|
"GLX_ARB_context_flush_control\n");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Ignore unknown extensions */
|
/* Ignore unknown extensions */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,6 +71,8 @@ struct __GLXDRIscreen {
|
||||||
const __DRIcopySubBufferExtension *copySubBuffer;
|
const __DRIcopySubBufferExtension *copySubBuffer;
|
||||||
const __DRItexBufferExtension *texBuffer;
|
const __DRItexBufferExtension *texBuffer;
|
||||||
const __DRIconfig **driConfigs;
|
const __DRIconfig **driConfigs;
|
||||||
|
|
||||||
|
unsigned char glx_enable_bits[__GLX_EXT_BYTES];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct __GLXDRIcontext {
|
struct __GLXDRIcontext {
|
||||||
|
@ -394,13 +396,29 @@ initializeExtensions(__GLXDRIscreen * screen)
|
||||||
const __DRIextension **extensions;
|
const __DRIextension **extensions;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
__glXEnableExtension(screen->glx_enable_bits, "GLX_MESA_copy_sub_buffer");
|
||||||
|
LogMessage(X_INFO, "AIGLX: enabled GLX_MESA_copy_sub_buffer\n");
|
||||||
|
|
||||||
|
if (screen->swrast->base.version >= 3) {
|
||||||
|
__glXEnableExtension(screen->glx_enable_bits,
|
||||||
|
"GLX_ARB_create_context");
|
||||||
|
__glXEnableExtension(screen->glx_enable_bits,
|
||||||
|
"GLX_ARB_create_context_profile");
|
||||||
|
__glXEnableExtension(screen->glx_enable_bits,
|
||||||
|
"GLX_EXT_create_context_es2_profile");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* these are harmless to enable unconditionally */
|
||||||
|
__glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_framebuffer_sRGB");
|
||||||
|
__glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_fbconfig_float");
|
||||||
|
__glXEnableExtension(screen->glx_enable_bits, "GLX_SGI_make_current_read");
|
||||||
|
|
||||||
extensions = screen->core->getExtensions(screen->driScreen);
|
extensions = screen->core->getExtensions(screen->driScreen);
|
||||||
|
|
||||||
for (i = 0; extensions[i]; i++) {
|
for (i = 0; extensions[i]; i++) {
|
||||||
if (strcmp(extensions[i]->name, __DRI_COPY_SUB_BUFFER) == 0) {
|
if (strcmp(extensions[i]->name, __DRI_COPY_SUB_BUFFER) == 0) {
|
||||||
screen->copySubBuffer =
|
screen->copySubBuffer =
|
||||||
(const __DRIcopySubBufferExtension *) extensions[i];
|
(const __DRIcopySubBufferExtension *) extensions[i];
|
||||||
/* GLX_MESA_copy_sub_buffer is always enabled. */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcmp(extensions[i]->name, __DRI_TEX_BUFFER) == 0) {
|
if (strcmp(extensions[i]->name, __DRI_TEX_BUFFER) == 0) {
|
||||||
|
@ -408,7 +426,13 @@ initializeExtensions(__GLXDRIscreen * screen)
|
||||||
/* GLX_EXT_texture_from_pixmap is always enabled. */
|
/* GLX_EXT_texture_from_pixmap is always enabled. */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ignore unknown extensions */
|
#ifdef __DRI2_FLUSH_CONTROL
|
||||||
|
if (strcmp(extensions[i]->name, __DRI2_FLUSH_CONTROL) == 0) {
|
||||||
|
__glXEnableExtension(screen->glx_enable_bits,
|
||||||
|
"GLX_ARB_context_flush_control\n");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -420,6 +444,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
const char *driverName = "swrast";
|
const char *driverName = "swrast";
|
||||||
__GLXDRIscreen *screen;
|
__GLXDRIscreen *screen;
|
||||||
|
size_t buffer_size;
|
||||||
|
|
||||||
screen = calloc(1, sizeof *screen);
|
screen = calloc(1, sizeof *screen);
|
||||||
if (screen == NULL)
|
if (screen == NULL)
|
||||||
|
@ -431,6 +456,8 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||||
screen->base.swapInterval = NULL;
|
screen->base.swapInterval = NULL;
|
||||||
screen->base.pScreen = pScreen;
|
screen->base.pScreen = pScreen;
|
||||||
|
|
||||||
|
__glXInitExtensionEnableBits(screen->glx_enable_bits);
|
||||||
|
|
||||||
screen->driver = glxProbeDriver(driverName,
|
screen->driver = glxProbeDriver(driverName,
|
||||||
(void **) &screen->core,
|
(void **) &screen->core,
|
||||||
__DRI_CORE, 1,
|
__DRI_CORE, 1,
|
||||||
|
@ -459,6 +486,19 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||||
|
|
||||||
__glXScreenInit(&screen->base, pScreen);
|
__glXScreenInit(&screen->base, pScreen);
|
||||||
|
|
||||||
|
/* The first call simply determines the length of the extension string.
|
||||||
|
* This allows us to allocate some memory to hold the extension string,
|
||||||
|
* but it requires that we call __glXGetExtensionString a second time.
|
||||||
|
*/
|
||||||
|
buffer_size = __glXGetExtensionString(screen->glx_enable_bits, NULL);
|
||||||
|
if (buffer_size > 0) {
|
||||||
|
free(screen->base.GLXextensions);
|
||||||
|
|
||||||
|
screen->base.GLXextensions = xnfalloc(buffer_size);
|
||||||
|
(void) __glXGetExtensionString(screen->glx_enable_bits,
|
||||||
|
screen->base.GLXextensions);
|
||||||
|
}
|
||||||
|
|
||||||
screen->base.GLXmajor = 1;
|
screen->base.GLXmajor = 1;
|
||||||
screen->base.GLXminor = 4;
|
screen->base.GLXminor = 4;
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
#define _DMXPARSE_H_
|
#define _DMXPARSE_H_
|
||||||
|
|
||||||
#include <stdio.h> /* For FILE */
|
#include <stdio.h> /* For FILE */
|
||||||
|
#include <X11/Xfuncproto.h> /* For _X_ATTRIBUTE_PRINTF */
|
||||||
|
|
||||||
/** Stores tokens not stored in other structures (e.g., keywords and ;) */
|
/** Stores tokens not stored in other structures (e.g., keywords and ;) */
|
||||||
typedef struct _DMXConfigToken {
|
typedef struct _DMXConfigToken {
|
||||||
|
@ -203,7 +204,7 @@ extern int yylex(void);
|
||||||
extern int yydebug;
|
extern int yydebug;
|
||||||
extern void yyerror(const char *message);
|
extern void yyerror(const char *message);
|
||||||
|
|
||||||
extern void dmxConfigLog(const char *format, ...);
|
extern void dmxConfigLog(const char *format, ...) _X_ATTRIBUTE_PRINTF(1,0);
|
||||||
extern void *dmxConfigAlloc(unsigned long bytes);
|
extern void *dmxConfigAlloc(unsigned long bytes);
|
||||||
extern void *dmxConfigRealloc(void *orig,
|
extern void *dmxConfigRealloc(void *orig,
|
||||||
unsigned long orig_bytes, unsigned long bytes);
|
unsigned long orig_bytes, unsigned long bytes);
|
||||||
|
|
|
@ -130,7 +130,7 @@ dmxConfigPopState(void)
|
||||||
dmxConfigNewline();
|
dmxConfigNewline();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void _X_ATTRIBUTE_PRINTF(4, 5)
|
||||||
dmxConfigOutput(int addSpace, int doNewline, const char *comment,
|
dmxConfigOutput(int addSpace, int doNewline, const char *comment,
|
||||||
const char *format, ...)
|
const char *format, ...)
|
||||||
{
|
{
|
||||||
|
@ -261,32 +261,20 @@ dmxConfigPrintString(DMXConfigStringPtr p, int quote)
|
||||||
static int
|
static int
|
||||||
dmxConfigPrintPair(DMXConfigPairPtr p, int addSpace)
|
dmxConfigPrintPair(DMXConfigPairPtr p, int addSpace)
|
||||||
{
|
{
|
||||||
const char *format = NULL;
|
|
||||||
|
|
||||||
if (!p)
|
if (!p)
|
||||||
return 0;
|
return 0;
|
||||||
switch (p->token) {
|
|
||||||
case T_ORIGIN:
|
|
||||||
format = "@%dx%d";
|
|
||||||
break;
|
|
||||||
case T_DIMENSION:
|
|
||||||
format = "%dx%d";
|
|
||||||
break;
|
|
||||||
case T_OFFSET:
|
|
||||||
format = "%c%d%c%d";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (p->token == T_OFFSET) {
|
if (p->token == T_OFFSET) {
|
||||||
if (!p->comment && !p->x && !p->y && p->xsign >= 0 && p->ysign >= 0)
|
if (!p->comment && !p->x && !p->y && p->xsign >= 0 && p->ysign >= 0)
|
||||||
return 0;
|
return 0;
|
||||||
dmxConfigOutput(addSpace, 0, p->comment, format,
|
dmxConfigOutput(addSpace, 0, p->comment, "%c%d%c%d",
|
||||||
p->xsign < 0 ? '-' : '+', p->x,
|
p->xsign < 0 ? '-' : '+', p->x,
|
||||||
p->ysign < 0 ? '-' : '+', p->y);
|
p->ysign < 0 ? '-' : '+', p->y);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (!p->comment && !p->x && !p->y)
|
if (!p->comment && !p->x && !p->y)
|
||||||
return 0;
|
return 0;
|
||||||
dmxConfigOutput(addSpace, 0, p->comment, format, p->x, p->y);
|
dmxConfigOutput(addSpace, 0, p->comment, "%s%dx%d",
|
||||||
|
(p->token == T_ORIGIN) ? "@" : "", p->x, p->y);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
#include "extinit.h"
|
#include "extinit.h"
|
||||||
#include "opaque.h"
|
#include "opaque.h"
|
||||||
|
|
||||||
|
#include "dmx.h"
|
||||||
#include "dmxextension.h"
|
#include "dmxextension.h"
|
||||||
#include <X11/extensions/dmxproto.h>
|
#include <X11/extensions/dmxproto.h>
|
||||||
#include <X11/extensions/dmx.h>
|
#include <X11/extensions/dmx.h>
|
||||||
|
|
|
@ -47,9 +47,6 @@ extern int connBlockScreenStart;
|
||||||
|
|
||||||
#ifdef PANORAMIX
|
#ifdef PANORAMIX
|
||||||
#include "panoramiXsrv.h"
|
#include "panoramiXsrv.h"
|
||||||
extern int PanoramiXPixWidth;
|
|
||||||
extern int PanoramiXPixHeight;
|
|
||||||
extern int PanoramiXNumScreens;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int dmxGlobalWidth, dmxGlobalHeight;
|
int dmxGlobalWidth, dmxGlobalHeight;
|
||||||
|
|
|
@ -54,6 +54,4 @@ extern Bool dmxUnrealizeFont(ScreenPtr pScreen, FontPtr pFont);
|
||||||
extern Bool dmxBELoadFont(ScreenPtr pScreen, FontPtr pFont);
|
extern Bool dmxBELoadFont(ScreenPtr pScreen, FontPtr pFont);
|
||||||
extern Bool dmxBEFreeFont(ScreenPtr pScreen, FontPtr pFont);
|
extern Bool dmxBEFreeFont(ScreenPtr pScreen, FontPtr pFont);
|
||||||
|
|
||||||
extern int dmxFontPrivateIndex;
|
|
||||||
|
|
||||||
#endif /* DMXFONT_H */
|
#endif /* DMXFONT_H */
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
#include "pixmapstr.h"
|
#include "pixmapstr.h"
|
||||||
#include "migc.h"
|
#include "migc.h"
|
||||||
|
|
||||||
static GCFuncs dmxGCFuncs = {
|
static const GCFuncs dmxGCFuncs = {
|
||||||
dmxValidateGC,
|
dmxValidateGC,
|
||||||
dmxChangeGC,
|
dmxChangeGC,
|
||||||
dmxCopyGC,
|
dmxCopyGC,
|
||||||
|
@ -59,7 +59,7 @@ static GCFuncs dmxGCFuncs = {
|
||||||
dmxCopyClip,
|
dmxCopyClip,
|
||||||
};
|
};
|
||||||
|
|
||||||
static GCOps dmxGCOps = {
|
static const GCOps dmxGCOps = {
|
||||||
dmxFillSpans,
|
dmxFillSpans,
|
||||||
dmxSetSpans,
|
dmxSetSpans,
|
||||||
dmxPutImage,
|
dmxPutImage,
|
||||||
|
|
|
@ -41,8 +41,8 @@
|
||||||
|
|
||||||
/** GC private area. */
|
/** GC private area. */
|
||||||
typedef struct _dmxGCPriv {
|
typedef struct _dmxGCPriv {
|
||||||
GCOps *ops;
|
const GCOps *ops;
|
||||||
GCFuncs *funcs;
|
const GCFuncs *funcs;
|
||||||
XlibGC gc;
|
XlibGC gc;
|
||||||
Bool msc;
|
Bool msc;
|
||||||
} dmxGCPrivRec, *dmxGCPrivPtr;
|
} dmxGCPrivRec, *dmxGCPrivPtr;
|
||||||
|
|
|
@ -164,23 +164,23 @@ dmxErrorHandler(Display * dpy, XErrorEvent * ev)
|
||||||
switch (ev->error_code) {
|
switch (ev->error_code) {
|
||||||
case BadValue:
|
case BadValue:
|
||||||
dmxLog(dmxWarning, " Value: 0x%x\n",
|
dmxLog(dmxWarning, " Value: 0x%x\n",
|
||||||
ev->resourceid);
|
(unsigned int) ev->resourceid);
|
||||||
break;
|
break;
|
||||||
case BadAtom:
|
case BadAtom:
|
||||||
dmxLog(dmxWarning, " AtomID: 0x%x\n",
|
dmxLog(dmxWarning, " AtomID: 0x%x\n",
|
||||||
ev->resourceid);
|
(unsigned int) ev->resourceid);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
dmxLog(dmxWarning, " ResourceID: 0x%x\n",
|
dmxLog(dmxWarning, " ResourceID: 0x%x\n",
|
||||||
ev->resourceid);
|
(unsigned int) ev->resourceid);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provide serial number information */
|
/* Provide serial number information */
|
||||||
dmxLog(dmxWarning, " Failed serial number: %d\n",
|
dmxLog(dmxWarning, " Failed serial number: %d\n",
|
||||||
ev->serial);
|
(unsigned int) ev->serial);
|
||||||
dmxLog(dmxWarning, " Current serial number: %d\n",
|
dmxLog(dmxWarning, " Current serial number: %d\n",
|
||||||
dpy->request);
|
(unsigned int) dpy->request);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -634,7 +634,7 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char *argv[])
|
||||||
if (major > 0 && minor > 0)
|
if (major > 0 && minor > 0)
|
||||||
year += 2000;
|
year += 2000;
|
||||||
|
|
||||||
dmxLog(dmxInfo, "Generation: %d\n", dmxGeneration);
|
dmxLog(dmxInfo, "Generation: %lu\n", dmxGeneration);
|
||||||
dmxLog(dmxInfo, "DMX version: %d.%d.%02d%02d%02d (%s)\n",
|
dmxLog(dmxInfo, "DMX version: %d.%d.%02d%02d%02d (%s)\n",
|
||||||
major, minor, year, month, day, VENDOR_STRING);
|
major, minor, year, month, day, VENDOR_STRING);
|
||||||
|
|
||||||
|
@ -762,7 +762,6 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char *argv[])
|
||||||
dmxGlxVisualPrivate **configprivs = NULL;
|
dmxGlxVisualPrivate **configprivs = NULL;
|
||||||
int nconfigs = 0;
|
int nconfigs = 0;
|
||||||
int (*oldErrorHandler) (Display *, XErrorEvent *);
|
int (*oldErrorHandler) (Display *, XErrorEvent *);
|
||||||
int i;
|
|
||||||
|
|
||||||
/* Catch errors if when using an older GLX w/o FBconfigs */
|
/* Catch errors if when using an older GLX w/o FBconfigs */
|
||||||
oldErrorHandler = XSetErrorHandler(dmxNOPErrorHandler);
|
oldErrorHandler = XSetErrorHandler(dmxNOPErrorHandler);
|
||||||
|
@ -797,28 +796,29 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char *argv[])
|
||||||
configprivs = malloc(nconfigs * sizeof(dmxGlxVisualPrivate *));
|
configprivs = malloc(nconfigs * sizeof(dmxGlxVisualPrivate *));
|
||||||
|
|
||||||
if (configs != NULL && configprivs != NULL) {
|
if (configs != NULL && configprivs != NULL) {
|
||||||
|
int j;
|
||||||
|
|
||||||
/* Initialize our private info for each visual
|
/* Initialize our private info for each visual
|
||||||
* (currently only x_visual_depth and x_visual_class)
|
* (currently only x_visual_depth and x_visual_class)
|
||||||
*/
|
*/
|
||||||
for (i = 0; i < nconfigs; i++) {
|
for (j = 0; j < nconfigs; j++) {
|
||||||
|
|
||||||
configprivs[i] = (dmxGlxVisualPrivate *)
|
configprivs[j] = (dmxGlxVisualPrivate *)
|
||||||
malloc(sizeof(dmxGlxVisualPrivate));
|
malloc(sizeof(dmxGlxVisualPrivate));
|
||||||
configprivs[i]->x_visual_depth = 0;
|
configprivs[j]->x_visual_depth = 0;
|
||||||
configprivs[i]->x_visual_class = 0;
|
configprivs[j]->x_visual_class = 0;
|
||||||
|
|
||||||
/* Find the visual depth */
|
/* Find the visual depth */
|
||||||
if (configs[i].vid > 0) {
|
if (configs[j].vid > 0) {
|
||||||
int j;
|
int k;
|
||||||
|
|
||||||
for (j = 0; j < dmxScreen->beNumVisuals; j++) {
|
for (k = 0; k < dmxScreen->beNumVisuals; k++) {
|
||||||
if (dmxScreen->beVisuals[j].visualid ==
|
if (dmxScreen->beVisuals[k].visualid ==
|
||||||
configs[i].vid) {
|
configs[j].vid) {
|
||||||
configprivs[i]->x_visual_depth =
|
configprivs[j]->x_visual_depth =
|
||||||
dmxScreen->beVisuals[j].depth;
|
dmxScreen->beVisuals[k].depth;
|
||||||
configprivs[i]->x_visual_class =
|
configprivs[j]->x_visual_class =
|
||||||
dmxScreen->beVisuals[j].class;
|
dmxScreen->beVisuals[k].class;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,7 +57,6 @@
|
||||||
#include "mipict.h"
|
#include "mipict.h"
|
||||||
#include "fbpict.h"
|
#include "fbpict.h"
|
||||||
|
|
||||||
extern int RenderErrBase;
|
|
||||||
extern int (*ProcRenderVector[RenderNumberRequests]) (ClientPtr);
|
extern int (*ProcRenderVector[RenderNumberRequests]) (ClientPtr);
|
||||||
|
|
||||||
static int (*dmxSaveRenderVector[RenderNumberRequests]) (ClientPtr);
|
static int (*dmxSaveRenderVector[RenderNumberRequests]) (ClientPtr);
|
||||||
|
|
|
@ -220,7 +220,7 @@ dmxPropertyCheckOtherWindows(DMXScreenInfo * dmxScreen, Atom atom)
|
||||||
|
|
||||||
if (XGetTextProperty(dpy, win, &tp, atom) && tp.nitems) {
|
if (XGetTextProperty(dpy, win, &tp, atom) && tp.nitems) {
|
||||||
dmxLog(dmxDebug, "On %s/%lu: %s\n",
|
dmxLog(dmxDebug, "On %s/%lu: %s\n",
|
||||||
dmxScreen->name, win, tp.value);
|
dmxScreen->name, (unsigned long) win, tp.value);
|
||||||
if (!strncmp((char *) tp.value, (char *) id,
|
if (!strncmp((char *) tp.value, (char *) id,
|
||||||
strlen((char *) id))) {
|
strlen((char *) id))) {
|
||||||
int idx;
|
int idx;
|
||||||
|
@ -360,8 +360,8 @@ dmxPropertyWindow(DMXScreenInfo * dmxScreen)
|
||||||
dmxScreen->next = (other->next ? other->next : other);
|
dmxScreen->next = (other->next ? other->next : other);
|
||||||
other->next = (tmp ? tmp : dmxScreen);
|
other->next = (tmp ? tmp : dmxScreen);
|
||||||
dmxLog(dmxDebug, "%d/%s/%lu and %d/%s/%lu are on the same backend\n",
|
dmxLog(dmxDebug, "%d/%s/%lu and %d/%s/%lu are on the same backend\n",
|
||||||
dmxScreen->index, dmxScreen->name, dmxScreen->scrnWin,
|
dmxScreen->index, dmxScreen->name, (unsigned long) dmxScreen->scrnWin,
|
||||||
other->index, other->name, other->scrnWin);
|
other->index, other->name, (unsigned long) other->scrnWin);
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), ".%d,%lu", dmxScreen->index,
|
snprintf(buf, sizeof(buf), ".%d,%lu", dmxScreen->index,
|
||||||
|
|
|
@ -80,7 +80,6 @@ dmxBEScreenInit(ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
|
DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
|
||||||
XSetWindowAttributes attribs;
|
XSetWindowAttributes attribs;
|
||||||
XGCValues gcvals;
|
|
||||||
unsigned long mask;
|
unsigned long mask;
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
|
|
|
@ -857,13 +857,9 @@ dmxResizeWindow(WindowPtr pWindow, int x, int y,
|
||||||
ScreenPtr pScreen = pWindow->drawable.pScreen;
|
ScreenPtr pScreen = pWindow->drawable.pScreen;
|
||||||
DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
|
DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
|
||||||
dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
|
dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
|
||||||
dmxWinPrivPtr pSibPriv;
|
|
||||||
unsigned int m;
|
unsigned int m;
|
||||||
XWindowChanges c;
|
XWindowChanges c;
|
||||||
|
|
||||||
if (pSib)
|
|
||||||
pSibPriv = DMX_GET_WINDOW_PRIV(pSib);
|
|
||||||
|
|
||||||
DMX_UNWRAP(ResizeWindow, dmxScreen, pScreen);
|
DMX_UNWRAP(ResizeWindow, dmxScreen, pScreen);
|
||||||
#if 1
|
#if 1
|
||||||
if (pScreen->ResizeWindow)
|
if (pScreen->ResizeWindow)
|
||||||
|
|
|
@ -48,4 +48,11 @@ extern GLint __glTexGeniv_size(GLenum e);
|
||||||
extern GLint __glTexParameterfv_size(GLenum e);
|
extern GLint __glTexParameterfv_size(GLenum e);
|
||||||
extern GLint __glTexParameteriv_size(GLenum e);
|
extern GLint __glTexParameteriv_size(GLenum e);
|
||||||
|
|
||||||
|
extern GLint __glCallLists_size(GLsizei n, GLenum type);
|
||||||
|
extern GLint __glDrawPixels_size(GLenum format, GLenum type, GLsizei w, GLsizei h);
|
||||||
|
extern GLint __glBitmap_size(GLsizei w, GLsizei h);
|
||||||
|
extern GLint __glTexImage1D_size(GLenum format, GLenum type, GLsizei w);
|
||||||
|
extern GLint __glTexImage2D_size(GLenum format, GLenum type, GLsizei w, GLsizei h);
|
||||||
|
extern GLint __glTexImage3D_size(GLenum format, GLenum type, GLsizei w, GLsizei h, GLsizei d);
|
||||||
|
|
||||||
#endif /* !__compsize_h__ */
|
#endif /* !__compsize_h__ */
|
||||||
|
|
|
@ -655,7 +655,6 @@ extern void __glXDispSwap_CopyConvolutionFilter2D(GLbyte *);
|
||||||
extern void __glXDispSwap_SeparableFilter2D(GLbyte *);
|
extern void __glXDispSwap_SeparableFilter2D(GLbyte *);
|
||||||
extern void __glXDispSwap_TexImage3D(GLbyte *);
|
extern void __glXDispSwap_TexImage3D(GLbyte *);
|
||||||
extern void __glXDispSwap_TexSubImage3D(GLbyte *);
|
extern void __glXDispSwap_TexSubImage3D(GLbyte *);
|
||||||
extern void __glXDispSwap_DrawArrays(GLbyte *);
|
|
||||||
extern void __glXDispSwap_PrioritizeTextures(GLbyte *);
|
extern void __glXDispSwap_PrioritizeTextures(GLbyte *);
|
||||||
extern void __glXDispSwap_CopyTexImage1D(GLbyte *);
|
extern void __glXDispSwap_CopyTexImage1D(GLbyte *);
|
||||||
extern void __glXDispSwap_CopyTexImage2D(GLbyte *);
|
extern void __glXDispSwap_CopyTexImage2D(GLbyte *);
|
||||||
|
@ -663,6 +662,26 @@ extern void __glXDispSwap_CopyTexSubImage1D(GLbyte *);
|
||||||
extern void __glXDispSwap_CopyTexSubImage2D(GLbyte *);
|
extern void __glXDispSwap_CopyTexSubImage2D(GLbyte *);
|
||||||
extern void __glXDispSwap_CopyTexSubImage3D(GLbyte *);
|
extern void __glXDispSwap_CopyTexSubImage3D(GLbyte *);
|
||||||
|
|
||||||
|
extern void __glXDispSwap_BindTexture(GLbyte *);
|
||||||
|
extern void __glXDispSwap_BlendColor(GLbyte *);
|
||||||
|
extern void __glXDispSwap_BlendEquation(GLbyte *);
|
||||||
|
extern void __glXDispSwap_ColorTable(GLbyte *);
|
||||||
|
extern void __glXDispSwap_ColorTableParameterfv(GLbyte *);
|
||||||
|
extern void __glXDispSwap_ColorTableParameteriv(GLbyte *);
|
||||||
|
extern void __glXDispSwap_CopyColorTable(GLbyte *);
|
||||||
|
extern void __glXDispSwap_ConvolutionParameterf(GLbyte *);
|
||||||
|
extern void __glXDispSwap_ConvolutionParameteri(GLbyte *);
|
||||||
|
extern void __glXDispSwap_Histogram(GLbyte *);
|
||||||
|
extern void __glXDispSwap_Minmax(GLbyte *);
|
||||||
|
extern void __glXDispSwap_ResetHistogram(GLbyte *);
|
||||||
|
extern void __glXDispSwap_ResetMinmax(GLbyte *);
|
||||||
|
|
||||||
|
extern int __glXSwapCreateContextWithConfigSGIX(__GLXclientState *, GLbyte *);
|
||||||
|
extern int __glXSwapBindSwapBarrierSGIX(__GLXclientState *, GLbyte *);
|
||||||
|
extern int __glXSwapJoinSwapGroupSGIX(__GLXclientState *, GLbyte *);
|
||||||
|
extern int __glXSwapQueryMaxSwapBarriersSGIX(__GLXclientState *, GLbyte *);
|
||||||
|
extern int __glXSwapMakeCurrentReadSGI(__GLXclientState *, GLbyte *);
|
||||||
|
|
||||||
#define __GLX_MIN_GLXCMD_OPCODE 1
|
#define __GLX_MIN_GLXCMD_OPCODE 1
|
||||||
#define __GLX_MAX_GLXCMD_OPCODE 20
|
#define __GLX_MAX_GLXCMD_OPCODE 20
|
||||||
#define __GLX_MIN_RENDER_OPCODE 1
|
#define __GLX_MIN_RENDER_OPCODE 1
|
||||||
|
|
|
@ -61,7 +61,6 @@
|
||||||
extern __GLXFBConfig **__glXFBConfigs;
|
extern __GLXFBConfig **__glXFBConfigs;
|
||||||
extern int __glXNumFBConfigs;
|
extern int __glXNumFBConfigs;
|
||||||
|
|
||||||
extern int glxIsExtensionSupported(char *ext);
|
|
||||||
extern int __glXGetFBConfigsSGIX(__GLXclientState * cl, GLbyte * pc);
|
extern int __glXGetFBConfigsSGIX(__GLXclientState * cl, GLbyte * pc);
|
||||||
|
|
||||||
#define BE_TO_CLIENT_ERROR(x) \
|
#define BE_TO_CLIENT_ERROR(x) \
|
||||||
|
@ -3394,11 +3393,11 @@ __glXCreatePbuffer(__GLXclientState * cl, GLbyte * pc)
|
||||||
|
|
||||||
/* Send attributes */
|
/* Send attributes */
|
||||||
if (attr != NULL) {
|
if (attr != NULL) {
|
||||||
CARD32 *pc = (CARD32 *) (be_req + 1);
|
CARD32 *pca = (CARD32 *) (be_req + 1);
|
||||||
|
|
||||||
while (numAttribs-- > 0) {
|
while (numAttribs-- > 0) {
|
||||||
*pc++ = *attr++; /* token */
|
*pca++ = *attr++; /* token */
|
||||||
*pc++ = *attr++; /* value */
|
*pca++ = *attr++; /* value */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,5 +33,11 @@ extern int __glXCreateContextWithConfigSGIX(__GLXclientState * cl, GLbyte * pc);
|
||||||
extern int __glXJoinSwapGroupSGIX(__GLXclientState * cl, GLbyte * pc);
|
extern int __glXJoinSwapGroupSGIX(__GLXclientState * cl, GLbyte * pc);
|
||||||
extern int __glXMakeCurrentReadSGI(__GLXclientState * cl, GLbyte * pc);
|
extern int __glXMakeCurrentReadSGI(__GLXclientState * cl, GLbyte * pc);
|
||||||
extern int __glXQueryMaxSwapBarriersSGIX(__GLXclientState * cl, GLbyte * pc);
|
extern int __glXQueryMaxSwapBarriersSGIX(__GLXclientState * cl, GLbyte * pc);
|
||||||
|
extern int __glXDoSwapBuffers(__GLXclientState * cl, XID drawId,
|
||||||
|
GLXContextTag tag);
|
||||||
|
|
||||||
|
extern Display *GetBackEndDisplay(__GLXclientState * cl, int s);
|
||||||
|
extern int GetCurrentBackEndTag(__GLXclientState * cl, GLXContextTag tag,
|
||||||
|
int s);
|
||||||
|
|
||||||
#endif /* !__GLX_cmds_h__ */
|
#endif /* !__GLX_cmds_h__ */
|
||||||
|
|
|
@ -39,8 +39,6 @@
|
||||||
#include "glxext.h"
|
#include "glxext.h"
|
||||||
#include "glxvendor.h"
|
#include "glxvendor.h"
|
||||||
|
|
||||||
extern int glxIsExtensionSupported(char *ext);
|
|
||||||
|
|
||||||
int __glXSwapGetFBConfigsSGIX(__GLXclientState * cl, GLbyte * pc);
|
int __glXSwapGetFBConfigsSGIX(__GLXclientState * cl, GLbyte * pc);
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
@ -440,7 +438,7 @@ __glXSwapUseXFont(__GLXclientState * cl, GLbyte * pc)
|
||||||
int
|
int
|
||||||
__glXSwapQueryExtensionsString(__GLXclientState * cl, GLbyte * pc)
|
__glXSwapQueryExtensionsString(__GLXclientState * cl, GLbyte * pc)
|
||||||
{
|
{
|
||||||
xGLXQueryExtensionsStringReq *req = NULL;
|
xGLXQueryExtensionsStringReq *req = (xGLXQueryExtensionsStringReq *) pc;
|
||||||
|
|
||||||
__GLX_DECLARE_SWAP_VARIABLES;
|
__GLX_DECLARE_SWAP_VARIABLES;
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@ extern void __glXFlushContextCache(void);
|
||||||
|
|
||||||
extern void __glXFreeGLXWindow(__glXWindow * pGlxWindow);
|
extern void __glXFreeGLXWindow(__glXWindow * pGlxWindow);
|
||||||
extern void __glXFreeGLXPixmap(__GLXpixmap * pGlxPixmap);
|
extern void __glXFreeGLXPixmap(__GLXpixmap * pGlxPixmap);
|
||||||
|
extern void __glXFreeGLXPbuffer(__glXPbuffer * pGlxPbuffer);
|
||||||
|
|
||||||
extern void __glXNoSuchRenderOpcode(GLbyte *);
|
extern void __glXNoSuchRenderOpcode(GLbyte *);
|
||||||
extern int __glXNoSuchSingleOpcode(__GLXclientState *, GLbyte *);
|
extern int __glXNoSuchSingleOpcode(__GLXclientState *, GLbyte *);
|
||||||
|
|
|
@ -65,8 +65,6 @@ static void
|
||||||
CalcServerVersionAndExtensions(void)
|
CalcServerVersionAndExtensions(void)
|
||||||
{
|
{
|
||||||
int s;
|
int s;
|
||||||
xGLXQueryVersionReq *req;
|
|
||||||
xGLXQueryVersionReply reply;
|
|
||||||
char **be_extensions;
|
char **be_extensions;
|
||||||
char *ext;
|
char *ext;
|
||||||
char *denied_extensions;
|
char *denied_extensions;
|
||||||
|
@ -80,6 +78,8 @@ CalcServerVersionAndExtensions(void)
|
||||||
for (s = 0; s < __glXNumActiveScreens; s++) {
|
for (s = 0; s < __glXNumActiveScreens; s++) {
|
||||||
DMXScreenInfo *dmxScreen = &dmxScreens[s];
|
DMXScreenInfo *dmxScreen = &dmxScreens[s];
|
||||||
Display *dpy = dmxScreen->beDisplay;
|
Display *dpy = dmxScreen->beDisplay;
|
||||||
|
xGLXQueryVersionReq *req;
|
||||||
|
xGLXQueryVersionReply reply;
|
||||||
|
|
||||||
/* Send the glXQueryVersion request */
|
/* Send the glXQueryVersion request */
|
||||||
LockDisplay(dpy);
|
LockDisplay(dpy);
|
||||||
|
@ -335,7 +335,7 @@ __glXGetServerString(unsigned int name)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
glxIsExtensionSupported(char *ext)
|
glxIsExtensionSupported(const char *ext)
|
||||||
{
|
{
|
||||||
return (strstr(ExtensionsString, ext) != NULL);
|
return (strstr(ExtensionsString, ext) != NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,4 +50,6 @@ extern void __glXScreenReset(void);
|
||||||
|
|
||||||
extern char *__glXGetServerString(unsigned int name);
|
extern char *__glXGetServerString(unsigned int name);
|
||||||
|
|
||||||
|
extern int glxIsExtensionSupported(const char *ext);
|
||||||
|
|
||||||
#endif /* !__GLX_screens_h__ */
|
#endif /* !__GLX_screens_h__ */
|
||||||
|
|
|
@ -149,9 +149,7 @@ extern __GLXclientState *__glXClients[];
|
||||||
typedef void (*__GLXdispatchRenderProcPtr) (GLbyte *);
|
typedef void (*__GLXdispatchRenderProcPtr) (GLbyte *);
|
||||||
typedef int (*__GLXdispatchSingleProcPtr) (__GLXclientState *, GLbyte *);
|
typedef int (*__GLXdispatchSingleProcPtr) (__GLXclientState *, GLbyte *);
|
||||||
typedef int (*__GLXdispatchVendorPrivProcPtr) (__GLXclientState *, GLbyte *);
|
typedef int (*__GLXdispatchVendorPrivProcPtr) (__GLXclientState *, GLbyte *);
|
||||||
extern __GLXdispatchSingleProcPtr __glXSingleTable[];
|
|
||||||
extern __GLXdispatchVendorPrivProcPtr __glXVendorPrivTable_EXT[];
|
extern __GLXdispatchVendorPrivProcPtr __glXVendorPrivTable_EXT[];
|
||||||
extern __GLXdispatchSingleProcPtr __glXSwapSingleTable[];
|
|
||||||
extern __GLXdispatchVendorPrivProcPtr __glXSwapVendorPrivTable_EXT[];
|
extern __GLXdispatchVendorPrivProcPtr __glXSwapVendorPrivTable_EXT[];
|
||||||
extern __GLXdispatchRenderProcPtr __glXSwapRenderTable[];
|
extern __GLXdispatchRenderProcPtr __glXSwapRenderTable[];
|
||||||
|
|
||||||
|
@ -193,9 +191,6 @@ extern RESTYPE __glXPbufferRes;
|
||||||
|
|
||||||
extern char *__glXcombine_strings(const char *, const char *);
|
extern char *__glXcombine_strings(const char *, const char *);
|
||||||
|
|
||||||
extern void __glXDisp_DrawArrays(GLbyte *);
|
|
||||||
extern void __glXDispSwap_DrawArrays(GLbyte *);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Routines for sending swapped replies.
|
** Routines for sending swapped replies.
|
||||||
*/
|
*/
|
||||||
|
@ -287,9 +282,6 @@ extern int __glXConvolutionParameterfvSize(GLenum pname);
|
||||||
extern int __glXColorTableParameterfvSize(GLenum pname);
|
extern int __glXColorTableParameterfvSize(GLenum pname);
|
||||||
extern int __glXColorTableParameterivSize(GLenum pname);
|
extern int __glXColorTableParameterivSize(GLenum pname);
|
||||||
|
|
||||||
extern void __glXFreeGLXWindow(__glXWindow * pGlxWindow);
|
|
||||||
extern void __glXFreeGLXPbuffer(__glXPbuffer * pGlxPbuffer);
|
|
||||||
|
|
||||||
extern int __glXVersionMajor;
|
extern int __glXVersionMajor;
|
||||||
extern int __glXVersionMinor;
|
extern int __glXVersionMinor;
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,8 @@
|
||||||
/* #include "g_disptab_EXT.h" */
|
/* #include "g_disptab_EXT.h" */
|
||||||
#include "unpack.h"
|
#include "unpack.h"
|
||||||
#include "glxutil.h"
|
#include "glxutil.h"
|
||||||
|
#include "glxcmds.h"
|
||||||
|
#include "glxsingle.h"
|
||||||
|
|
||||||
#include "GL/glxproto.h"
|
#include "GL/glxproto.h"
|
||||||
|
|
||||||
|
@ -81,10 +83,6 @@
|
||||||
|
|
||||||
#define X_GLXSingle 0 /* needed by GetReqExtra */
|
#define X_GLXSingle 0 /* needed by GetReqExtra */
|
||||||
|
|
||||||
extern Display *GetBackEndDisplay(__GLXclientState * cl, int s);
|
|
||||||
extern int GetCurrentBackEndTag(__GLXclientState * cl, GLXContextTag tag,
|
|
||||||
int s);
|
|
||||||
|
|
||||||
static int swap_vec_element_size = 0;
|
static int swap_vec_element_size = 0;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -47,8 +47,4 @@ extern int __glXForwardAllWithReplySwapsv(__GLXclientState * cl, GLbyte * pc);
|
||||||
extern int __glXForwardAllWithReplySwapiv(__GLXclientState * cl, GLbyte * pc);
|
extern int __glXForwardAllWithReplySwapiv(__GLXclientState * cl, GLbyte * pc);
|
||||||
extern int __glXForwardAllWithReplySwapdv(__GLXclientState * cl, GLbyte * pc);
|
extern int __glXForwardAllWithReplySwapdv(__GLXclientState * cl, GLbyte * pc);
|
||||||
|
|
||||||
extern int __glXDisp_ReadPixels(__GLXclientState * cl, GLbyte * pc);
|
|
||||||
extern int __glXDispSwap_GetTexImage(__GLXclientState * cl, GLbyte * pc);
|
|
||||||
extern int __glXDispSwap_GetColorTable(__GLXclientState * cl, GLbyte * pc);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -39,9 +39,7 @@
|
||||||
#include "dmxwindow.h"
|
#include "dmxwindow.h"
|
||||||
#include "glxserver.h"
|
#include "glxserver.h"
|
||||||
#include "glxswap.h"
|
#include "glxswap.h"
|
||||||
|
#include "glxcmds.h"
|
||||||
extern int __glXDoSwapBuffers(__GLXclientState * cl, XID drawId,
|
|
||||||
GLXContextTag tag);
|
|
||||||
|
|
||||||
typedef struct _SwapGroup *SwapGroupPtr;
|
typedef struct _SwapGroup *SwapGroupPtr;
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,8 @@
|
||||||
/* #include "g_disptab_EXT.h" */
|
/* #include "g_disptab_EXT.h" */
|
||||||
#include "unpack.h"
|
#include "unpack.h"
|
||||||
#include "glxutil.h"
|
#include "glxutil.h"
|
||||||
|
#include "glxcmds.h"
|
||||||
|
#include "glxvendor.h"
|
||||||
|
|
||||||
#include "GL/glxproto.h"
|
#include "GL/glxproto.h"
|
||||||
|
|
||||||
|
@ -78,10 +80,6 @@
|
||||||
dpy->request++
|
dpy->request++
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern Display *GetBackEndDisplay(__GLXclientState * cl, int s);
|
|
||||||
extern int GetCurrentBackEndTag(__GLXclientState * cl, GLXContextTag tag,
|
|
||||||
int s);
|
|
||||||
|
|
||||||
static int swap_vec_element_size = 0;
|
static int swap_vec_element_size = 0;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -874,17 +874,17 @@ dmxInputScanForExtensions(DMXInputInfo * dmxInput, int doXI)
|
||||||
{
|
{
|
||||||
XExtensionVersion *ext;
|
XExtensionVersion *ext;
|
||||||
XDeviceInfo *devices;
|
XDeviceInfo *devices;
|
||||||
Display *display;
|
Display *dsp;
|
||||||
int num;
|
int num;
|
||||||
int i, j;
|
int i, j;
|
||||||
XextErrorHandler handler;
|
XextErrorHandler handler;
|
||||||
|
|
||||||
if (!(display = XOpenDisplay(dmxInput->name)))
|
if (!(dsp = XOpenDisplay(dmxInput->name)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Print out information about the XInput Extension. */
|
/* Print out information about the XInput Extension. */
|
||||||
handler = XSetExtensionErrorHandler(dmxInputExtensionErrorHandler);
|
handler = XSetExtensionErrorHandler(dmxInputExtensionErrorHandler);
|
||||||
ext = XGetExtensionVersion(display, INAME);
|
ext = XGetExtensionVersion(dsp, INAME);
|
||||||
XSetExtensionErrorHandler(handler);
|
XSetExtensionErrorHandler(handler);
|
||||||
|
|
||||||
if (!ext || ext == (XExtensionVersion *) NoSuchExtension) {
|
if (!ext || ext == (XExtensionVersion *) NoSuchExtension) {
|
||||||
|
@ -894,7 +894,7 @@ dmxInputScanForExtensions(DMXInputInfo * dmxInput, int doXI)
|
||||||
dmxLogInput(dmxInput, "Locating devices on %s (%s version %d.%d)\n",
|
dmxLogInput(dmxInput, "Locating devices on %s (%s version %d.%d)\n",
|
||||||
dmxInput->name, INAME,
|
dmxInput->name, INAME,
|
||||||
ext->major_version, ext->minor_version);
|
ext->major_version, ext->minor_version);
|
||||||
devices = XListInputDevices(display, &num);
|
devices = XListInputDevices(dsp, &num);
|
||||||
|
|
||||||
XFree(ext);
|
XFree(ext);
|
||||||
ext = NULL;
|
ext = NULL;
|
||||||
|
@ -956,7 +956,7 @@ dmxInputScanForExtensions(DMXInputInfo * dmxInput, int doXI)
|
||||||
}
|
}
|
||||||
XFreeDeviceList(devices);
|
XFreeDeviceList(devices);
|
||||||
}
|
}
|
||||||
XCloseDisplay(display);
|
XCloseDisplay(dsp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Re-initialize all the devices described in \a dmxInput. Called from
|
/** Re-initialize all the devices described in \a dmxInput. Called from
|
||||||
|
|
|
@ -52,6 +52,13 @@ void processScreenOrOutputArg(const char *screen_size, const char *output, char
|
||||||
void processOutputArg(const char *output, char *parent_id);
|
void processOutputArg(const char *output, char *parent_id);
|
||||||
void processScreenArg(const char *screen_size, char *parent_id);
|
void processScreenArg(const char *screen_size, char *parent_id);
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char *argv[], char *envp[])
|
||||||
|
{
|
||||||
|
hostx_use_resname(basename(argv[0]), 0);
|
||||||
|
return dix_main(argc, argv, envp);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
InitCard(char *name)
|
InitCard(char *name)
|
||||||
{
|
{
|
||||||
|
@ -209,10 +216,6 @@ ddxProcessArgument(int argc, char **argv, int i)
|
||||||
|
|
||||||
EPHYR_DBG("mark argv[%d]='%s'", i, argv[i]);
|
EPHYR_DBG("mark argv[%d]='%s'", i, argv[i]);
|
||||||
|
|
||||||
if (i == 1) {
|
|
||||||
hostx_use_resname(basename(argv[0]), 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!strcmp(argv[i], "-parent")) {
|
if (!strcmp(argv[i], "-parent")) {
|
||||||
if (i + 1 < argc) {
|
if (i + 1 < argc) {
|
||||||
int j;
|
int j;
|
||||||
|
|
|
@ -177,7 +177,7 @@ hostx_set_win_title(KdScreenInfo *screen, const char *extra_text)
|
||||||
|
|
||||||
memset(buf, 0, BUF_LEN + 1);
|
memset(buf, 0, BUF_LEN + 1);
|
||||||
snprintf(buf, BUF_LEN, "Xephyr on %s.%d %s",
|
snprintf(buf, BUF_LEN, "Xephyr on %s.%d %s",
|
||||||
HostX.server_dpy_name,
|
HostX.server_dpy_name ? HostX.server_dpy_name : ":0",
|
||||||
scrpriv->mynum, (extra_text != NULL) ? extra_text : "");
|
scrpriv->mynum, (extra_text != NULL) ? extra_text : "");
|
||||||
|
|
||||||
xcb_icccm_set_wm_name(HostX.conn,
|
xcb_icccm_set_wm_name(HostX.conn,
|
||||||
|
@ -443,7 +443,7 @@ hostx_init(void)
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
HostX.conn = xcb_connect(NULL, &HostX.screen);
|
HostX.conn = xcb_connect(NULL, &HostX.screen);
|
||||||
if (xcb_connection_has_error(HostX.conn)) {
|
if (!HostX.conn || xcb_connection_has_error(HostX.conn)) {
|
||||||
fprintf(stderr, "\nXephyr cannot open host display. Is DISPLAY set?\n");
|
fprintf(stderr, "\nXephyr cannot open host display. Is DISPLAY set?\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
@ -798,7 +798,7 @@ hostx_screen_init(KdScreenInfo *screen,
|
||||||
}
|
}
|
||||||
|
|
||||||
EPHYR_DBG("host_screen=%p x=%d, y=%d, wxh=%dx%d, buffer_height=%d",
|
EPHYR_DBG("host_screen=%p x=%d, y=%d, wxh=%dx%d, buffer_height=%d",
|
||||||
host_screen, x, y, width, height, buffer_height);
|
screen, x, y, width, height, buffer_height);
|
||||||
|
|
||||||
if (scrpriv->ximg != NULL) {
|
if (scrpriv->ximg != NULL) {
|
||||||
/* Free up the image data if previously used
|
/* Free up the image data if previously used
|
||||||
|
@ -866,6 +866,11 @@ hostx_screen_init(KdScreenInfo *screen,
|
||||||
~0,
|
~0,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
/* Match server byte order so that the image can be converted to
|
||||||
|
* the native byte order by xcb_image_put() before drawing */
|
||||||
|
if (host_depth_matches_server(scrpriv))
|
||||||
|
scrpriv->ximg->byte_order = IMAGE_BYTE_ORDER;
|
||||||
|
|
||||||
scrpriv->ximg->data =
|
scrpriv->ximg->data =
|
||||||
malloc(scrpriv->ximg->stride * buffer_height);
|
malloc(scrpriv->ximg->stride * buffer_height);
|
||||||
}
|
}
|
||||||
|
@ -1034,8 +1039,13 @@ hostx_paint_rect(KdScreenInfo *screen,
|
||||||
sx, sy, dx, dy, width, height, FALSE);
|
sx, sy, dx, dy, width, height, FALSE);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
xcb_image_put(HostX.conn, scrpriv->win, HostX.gc, scrpriv->ximg,
|
xcb_image_t *subimg = xcb_image_subimage(scrpriv->ximg, sx, sy,
|
||||||
dx, dy, 0);
|
width, height, 0, 0, 0);
|
||||||
|
xcb_image_t *img = xcb_image_native(HostX.conn, subimg, 1);
|
||||||
|
xcb_image_put(HostX.conn, scrpriv->win, HostX.gc, img, dx, dy, 0);
|
||||||
|
if (subimg != img)
|
||||||
|
xcb_image_destroy(img);
|
||||||
|
xcb_image_destroy(subimg);
|
||||||
}
|
}
|
||||||
|
|
||||||
xcb_aux_sync(HostX.conn);
|
xcb_aux_sync(HostX.conn);
|
||||||
|
@ -1407,9 +1417,12 @@ ephyr_glamor_init(ScreenPtr screen)
|
||||||
ephyr_glamor_set_window_size(scrpriv->glamor,
|
ephyr_glamor_set_window_size(scrpriv->glamor,
|
||||||
scrpriv->win_width, scrpriv->win_height);
|
scrpriv->win_width, scrpriv->win_height);
|
||||||
|
|
||||||
glamor_init(screen,
|
if (!glamor_init(screen,
|
||||||
GLAMOR_USE_SCREEN |
|
GLAMOR_USE_SCREEN |
|
||||||
GLAMOR_USE_PICTURE_SCREEN);
|
GLAMOR_USE_PICTURE_SCREEN)) {
|
||||||
|
FatalError("Failed to initialize glamor\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ Xfake_SOURCES = \
|
||||||
|
|
||||||
Xfake_LDADD = \
|
Xfake_LDADD = \
|
||||||
libfake.la \
|
libfake.la \
|
||||||
|
@KDRIVE_MAIN_LIB@ \
|
||||||
@KDRIVE_LIBS@
|
@KDRIVE_LIBS@
|
||||||
|
|
||||||
Xfake_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
|
Xfake_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
|
||||||
|
|
|
@ -16,6 +16,7 @@ Xfbdev_SOURCES = \
|
||||||
|
|
||||||
Xfbdev_LDADD = \
|
Xfbdev_LDADD = \
|
||||||
libfbdev.la \
|
libfbdev.la \
|
||||||
|
@KDRIVE_MAIN_LIB@ \
|
||||||
@KDRIVE_LIBS@
|
@KDRIVE_LIBS@
|
||||||
|
|
||||||
Xfbdev_DEPENDENCIES = \
|
Xfbdev_DEPENDENCIES = \
|
||||||
|
|
|
@ -583,10 +583,11 @@ xf86VTEnter(void)
|
||||||
/* Turn screen saver off when switching back */
|
/* Turn screen saver off when switching back */
|
||||||
dixSaveScreens(serverClient, SCREEN_SAVER_FORCER, ScreenSaverReset);
|
dixSaveScreens(serverClient, SCREEN_SAVER_FORCER, ScreenSaverReset);
|
||||||
|
|
||||||
/* If we use systemd-logind it will enable input devices for us */
|
for (pInfo = xf86InputDevs; pInfo; pInfo = pInfo->next) {
|
||||||
if (!systemd_logind_controls_session())
|
/* Devices with server managed fds get enabled on logind resume */
|
||||||
for (pInfo = xf86InputDevs; pInfo; pInfo = pInfo->next)
|
if (!(pInfo->flags & XI86_SERVER_FD))
|
||||||
xf86EnableInputDeviceForVTSwitch(pInfo);
|
xf86EnableInputDeviceForVTSwitch(pInfo);
|
||||||
|
}
|
||||||
|
|
||||||
for (ih = InputHandlers; ih; ih = ih->next) {
|
for (ih = InputHandlers; ih; ih = ih->next) {
|
||||||
if (ih->is_input)
|
if (ih->is_input)
|
||||||
|
|
|
@ -153,8 +153,10 @@ xf86_check_platform_slot(const struct xf86_platform_device *pd)
|
||||||
for (i = 0; i < xf86NumEntities; i++) {
|
for (i = 0; i < xf86NumEntities; i++) {
|
||||||
const EntityPtr u = xf86Entities[i];
|
const EntityPtr u = xf86Entities[i];
|
||||||
|
|
||||||
if (pd->pdev && u->bus.type == BUS_PCI)
|
if (pd->pdev && u->bus.type == BUS_PCI &&
|
||||||
return !MATCH_PCI_DEVICES(pd->pdev, u->bus.id.pci);
|
MATCH_PCI_DEVICES(pd->pdev, u->bus.id.pci)) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
if ((u->bus.type == BUS_PLATFORM) && (pd == u->bus.id.plat)) {
|
if ((u->bus.type == BUS_PLATFORM) && (pd == u->bus.id.plat)) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -426,6 +428,10 @@ xf86platformProbeDev(DriverPtr drvp)
|
||||||
|
|
||||||
/* find the main device or any device specificed in xorg.conf */
|
/* find the main device or any device specificed in xorg.conf */
|
||||||
for (i = 0; i < numDevs; i++) {
|
for (i = 0; i < numDevs; i++) {
|
||||||
|
/* skip inactive devices */
|
||||||
|
if (!devList[i]->active)
|
||||||
|
continue;
|
||||||
|
|
||||||
for (j = 0; j < xf86_num_platform_devices; j++) {
|
for (j = 0; j < xf86_num_platform_devices; j++) {
|
||||||
if (devList[i]->busID && *devList[i]->busID) {
|
if (devList[i]->busID && *devList[i]->busID) {
|
||||||
if (xf86PlatformDeviceCheckBusID(&xf86_platform_devices[j], devList[i]->busID))
|
if (xf86PlatformDeviceCheckBusID(&xf86_platform_devices[j], devList[i]->busID))
|
||||||
|
@ -449,10 +455,14 @@ xf86platformProbeDev(DriverPtr drvp)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if autoaddgpu devices is enabled then go find a few more and add them as GPU screens */
|
/* if autoaddgpu devices is enabled then go find any unclaimed platform
|
||||||
if (xf86Info.autoAddGPU && numDevs) {
|
* devices and add them as GPU screens */
|
||||||
|
if (xf86Info.autoAddGPU) {
|
||||||
for (j = 0; j < xf86_num_platform_devices; j++) {
|
for (j = 0; j < xf86_num_platform_devices; j++) {
|
||||||
probeSingleDevice(&xf86_platform_devices[j], drvp, devList[0], PLATFORM_PROBE_GPU_SCREEN);
|
if (probeSingleDevice(&xf86_platform_devices[j], drvp,
|
||||||
|
devList ? devList[0] : NULL,
|
||||||
|
PLATFORM_PROBE_GPU_SCREEN))
|
||||||
|
foundScreen = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -269,9 +269,11 @@ ProcDRI2GetBuffers(ClientPtr client)
|
||||||
int status, width, height, count;
|
int status, width, height, count;
|
||||||
unsigned int *attachments;
|
unsigned int *attachments;
|
||||||
|
|
||||||
REQUEST_FIXED_SIZE(xDRI2GetBuffersReq, stuff->count * 4);
|
REQUEST_AT_LEAST_SIZE(xDRI2GetBuffersReq);
|
||||||
if (stuff->count > (INT_MAX / 4))
|
/* stuff->count is a count of CARD32 attachments that follows */
|
||||||
|
if (stuff->count > (INT_MAX / sizeof(CARD32)))
|
||||||
return BadLength;
|
return BadLength;
|
||||||
|
REQUEST_FIXED_SIZE(xDRI2GetBuffersReq, stuff->count * sizeof(CARD32));
|
||||||
|
|
||||||
if (!validDrawable(client, stuff->drawable, DixReadAccess | DixWriteAccess,
|
if (!validDrawable(client, stuff->drawable, DixReadAccess | DixWriteAccess,
|
||||||
&pDrawable, &status))
|
&pDrawable, &status))
|
||||||
|
@ -297,7 +299,13 @@ ProcDRI2GetBuffersWithFormat(ClientPtr client)
|
||||||
int status, width, height, count;
|
int status, width, height, count;
|
||||||
unsigned int *attachments;
|
unsigned int *attachments;
|
||||||
|
|
||||||
REQUEST_FIXED_SIZE(xDRI2GetBuffersReq, stuff->count * (2 * 4));
|
REQUEST_AT_LEAST_SIZE(xDRI2GetBuffersReq);
|
||||||
|
/* stuff->count is a count of pairs of CARD32s (attachments & formats)
|
||||||
|
that follows */
|
||||||
|
if (stuff->count > (INT_MAX / (2 * sizeof(CARD32))))
|
||||||
|
return BadLength;
|
||||||
|
REQUEST_FIXED_SIZE(xDRI2GetBuffersReq,
|
||||||
|
stuff->count * (2 * sizeof(CARD32)));
|
||||||
if (!validDrawable(client, stuff->drawable, DixReadAccess | DixWriteAccess,
|
if (!validDrawable(client, stuff->drawable, DixReadAccess | DixWriteAccess,
|
||||||
&pDrawable, &status))
|
&pDrawable, &status))
|
||||||
return status;
|
return status;
|
||||||
|
|
|
@ -63,6 +63,7 @@ CHIPSET(0x6608, OLAND_6608, OLAND)
|
||||||
CHIPSET(0x6610, OLAND_6610, OLAND)
|
CHIPSET(0x6610, OLAND_6610, OLAND)
|
||||||
CHIPSET(0x6611, OLAND_6611, OLAND)
|
CHIPSET(0x6611, OLAND_6611, OLAND)
|
||||||
CHIPSET(0x6613, OLAND_6613, OLAND)
|
CHIPSET(0x6613, OLAND_6613, OLAND)
|
||||||
|
CHIPSET(0x6617, OLAND_6617, OLAND)
|
||||||
CHIPSET(0x6620, OLAND_6620, OLAND)
|
CHIPSET(0x6620, OLAND_6620, OLAND)
|
||||||
CHIPSET(0x6621, OLAND_6621, OLAND)
|
CHIPSET(0x6621, OLAND_6621, OLAND)
|
||||||
CHIPSET(0x6623, OLAND_6623, OLAND)
|
CHIPSET(0x6623, OLAND_6623, OLAND)
|
||||||
|
@ -85,6 +86,7 @@ CHIPSET(0x6651, BONAIRE_6651, BONAIRE)
|
||||||
CHIPSET(0x6658, BONAIRE_6658, BONAIRE)
|
CHIPSET(0x6658, BONAIRE_6658, BONAIRE)
|
||||||
CHIPSET(0x665C, BONAIRE_665C, BONAIRE)
|
CHIPSET(0x665C, BONAIRE_665C, BONAIRE)
|
||||||
CHIPSET(0x665D, BONAIRE_665D, BONAIRE)
|
CHIPSET(0x665D, BONAIRE_665D, BONAIRE)
|
||||||
|
CHIPSET(0x665F, BONAIRE_665F, BONAIRE)
|
||||||
|
|
||||||
CHIPSET(0x9830, KABINI_9830, KABINI)
|
CHIPSET(0x9830, KABINI_9830, KABINI)
|
||||||
CHIPSET(0x9831, KABINI_9831, KABINI)
|
CHIPSET(0x9831, KABINI_9831, KABINI)
|
||||||
|
@ -155,3 +157,29 @@ CHIPSET(0x67B8, HAWAII_67B8, HAWAII)
|
||||||
CHIPSET(0x67B9, HAWAII_67B9, HAWAII)
|
CHIPSET(0x67B9, HAWAII_67B9, HAWAII)
|
||||||
CHIPSET(0x67BA, HAWAII_67BA, HAWAII)
|
CHIPSET(0x67BA, HAWAII_67BA, HAWAII)
|
||||||
CHIPSET(0x67BE, HAWAII_67BE, HAWAII)
|
CHIPSET(0x67BE, HAWAII_67BE, HAWAII)
|
||||||
|
|
||||||
|
CHIPSET(0x6900, ICELAND_, ICELAND)
|
||||||
|
CHIPSET(0x6901, ICELAND_, ICELAND)
|
||||||
|
CHIPSET(0x6902, ICELAND_, ICELAND)
|
||||||
|
CHIPSET(0x6903, ICELAND_, ICELAND)
|
||||||
|
CHIPSET(0x6907, ICELAND_, ICELAND)
|
||||||
|
|
||||||
|
CHIPSET(0x6920, TONGA_, TONGA)
|
||||||
|
CHIPSET(0x6921, TONGA_, TONGA)
|
||||||
|
CHIPSET(0x6928, TONGA_, TONGA)
|
||||||
|
CHIPSET(0x6929, TONGA_, TONGA)
|
||||||
|
CHIPSET(0x692B, TONGA_, TONGA)
|
||||||
|
CHIPSET(0x692F, TONGA_, TONGA)
|
||||||
|
CHIPSET(0x6930, TONGA_, TONGA)
|
||||||
|
CHIPSET(0x6938, TONGA_, TONGA)
|
||||||
|
CHIPSET(0x6939, TONGA_, TONGA)
|
||||||
|
|
||||||
|
CHIPSET(0x9870, CARRIZO_, CARRIZO)
|
||||||
|
CHIPSET(0x9874, CARRIZO_, CARRIZO)
|
||||||
|
CHIPSET(0x9875, CARRIZO_, CARRIZO)
|
||||||
|
CHIPSET(0x9876, CARRIZO_, CARRIZO)
|
||||||
|
CHIPSET(0x9877, CARRIZO_, CARRIZO)
|
||||||
|
|
||||||
|
CHIPSET(0x7300, FIJI_, FIJI)
|
||||||
|
|
||||||
|
CHIPSET(0x98E4, STONEY_, STONEY)
|
||||||
|
|
|
@ -427,10 +427,10 @@ drmmode_set_cursor(xf86CrtcPtr crtc)
|
||||||
drmModeSetCursor2(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id,
|
drmModeSetCursor2(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id,
|
||||||
handle, ms->cursor_width, ms->cursor_height,
|
handle, ms->cursor_width, ms->cursor_height,
|
||||||
cursor->bits->xhot, cursor->bits->yhot);
|
cursor->bits->xhot, cursor->bits->yhot);
|
||||||
|
if (!ret)
|
||||||
|
return;
|
||||||
if (ret == -EINVAL)
|
if (ret == -EINVAL)
|
||||||
use_set_cursor2 = FALSE;
|
use_set_cursor2 = FALSE;
|
||||||
else
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = drmModeSetCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, handle,
|
ret = drmModeSetCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, handle,
|
||||||
|
|
|
@ -25,6 +25,10 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_DIX_CONFIG_H
|
||||||
|
#include "dix-config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "dumb_bo.h"
|
#include "dumb_bo.h"
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
|
@ -104,7 +104,7 @@ readIntVec(struct pci_device *dev, unsigned char *buf, int len)
|
||||||
{
|
{
|
||||||
void *map;
|
void *map;
|
||||||
|
|
||||||
if (!pci_device_map_legacy(dev, 0, len, 0, &map))
|
if (pci_device_map_legacy(dev, 0, len, 0, &map))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
memcpy(buf, map, len);
|
memcpy(buf, map, len);
|
||||||
|
|
|
@ -46,7 +46,7 @@ On most platforms, the "Local" connection type is a UNIX-domain socket.
|
||||||
On some System V platforms, the "local" connection types also include
|
On some System V platforms, the "local" connection types also include
|
||||||
STREAMS pipes, named pipes, and some other mechanisms.
|
STREAMS pipes, named pipes, and some other mechanisms.
|
||||||
.TP 4
|
.TP 4
|
||||||
.I TCP\/IP
|
.I TCP/IP
|
||||||
.B Xorg
|
.B Xorg
|
||||||
listens on port
|
listens on port
|
||||||
.RI 6000+ n ,
|
.RI 6000+ n ,
|
||||||
|
|
|
@ -732,6 +732,8 @@ xf86CompatOutput(ScrnInfoPtr pScrn)
|
||||||
{
|
{
|
||||||
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
|
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
|
||||||
|
|
||||||
|
if (config->compat_output < 0)
|
||||||
|
return NULL;
|
||||||
return config->output[config->compat_output];
|
return config->output[config->compat_output];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -713,7 +713,7 @@ static const struct {
|
||||||
{1600, 1200, 75, 0},
|
{1600, 1200, 75, 0},
|
||||||
{1600, 1200, 85, 0},
|
{1600, 1200, 85, 0},
|
||||||
{1792, 1344, 60, 0},
|
{1792, 1344, 60, 0},
|
||||||
{1792, 1344, 85, 0},
|
{1792, 1344, 75, 0},
|
||||||
{1856, 1392, 60, 0},
|
{1856, 1392, 60, 0},
|
||||||
{1856, 1392, 75, 0},
|
{1856, 1392, 75, 0},
|
||||||
{1920, 1200, 60, 1},
|
{1920, 1200, 60, 1},
|
||||||
|
|
|
@ -683,11 +683,9 @@ xf86RandR12ScreenSetSize(ScreenPtr pScreen,
|
||||||
Bool ret = FALSE;
|
Bool ret = FALSE;
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
if (xf86RandR12Key) {
|
if (randrp->virtualX == -1 || randrp->virtualY == -1) {
|
||||||
if (randrp->virtualX == -1 || randrp->virtualY == -1) {
|
randrp->virtualX = pScrn->virtualX;
|
||||||
randrp->virtualX = pScrn->virtualX;
|
randrp->virtualY = pScrn->virtualY;
|
||||||
randrp->virtualY = pScrn->virtualY;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (pRoot && pScrn->vtSema)
|
if (pRoot && pScrn->vtSema)
|
||||||
(*pScrn->EnableDisableFBAccess) (pScrn, FALSE);
|
(*pScrn->EnableDisableFBAccess) (pScrn, FALSE);
|
||||||
|
@ -730,7 +728,7 @@ xf86RandR12ScreenSetSize(ScreenPtr pScreen,
|
||||||
if (pRoot && pScrn->vtSema)
|
if (pRoot && pScrn->vtSema)
|
||||||
(*pScrn->EnableDisableFBAccess) (pScrn, TRUE);
|
(*pScrn->EnableDisableFBAccess) (pScrn, TRUE);
|
||||||
#if RANDR_12_INTERFACE
|
#if RANDR_12_INTERFACE
|
||||||
if (xf86RandR12Key && pScreen->root && ret)
|
if (pScreen->root && ret)
|
||||||
RRScreenSizeNotify(pScreen);
|
RRScreenSizeNotify(pScreen);
|
||||||
#endif
|
#endif
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -826,9 +824,6 @@ xf86RandR12CreateScreenResources(ScreenPtr pScreen)
|
||||||
xf86RandR12ScreenSetSize(pScreen, width, height, mmWidth, mmHeight);
|
xf86RandR12ScreenSetSize(pScreen, width, height, mmWidth, mmHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xf86RandR12Key == NULL)
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
if (randrp->virtualX == -1 || randrp->virtualY == -1) {
|
if (randrp->virtualX == -1 || randrp->virtualY == -1) {
|
||||||
randrp->virtualX = pScrn->virtualX;
|
randrp->virtualX = pScrn->virtualX;
|
||||||
randrp->virtualY = pScrn->virtualY;
|
randrp->virtualY = pScrn->virtualY;
|
||||||
|
|
|
@ -75,7 +75,7 @@ readLegacy(struct pci_device *dev, unsigned char *buf, int base, int len)
|
||||||
{
|
{
|
||||||
void *map;
|
void *map;
|
||||||
|
|
||||||
if (!pci_device_map_legacy(dev, base, len, 0, &map))
|
if (pci_device_map_legacy(dev, base, len, 0, &map))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
memcpy(buf, map, len);
|
memcpy(buf, map, len);
|
||||||
|
|
|
@ -62,18 +62,24 @@ drain_console(int fd, void *closure)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static int
|
||||||
switch_to(int vt, const char *from)
|
switch_to(int vt, const char *from)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_ACTIVATE, vt));
|
SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_ACTIVATE, vt));
|
||||||
if (ret < 0)
|
if (ret < 0) {
|
||||||
FatalError("%s: VT_ACTIVATE failed: %s\n", from, strerror(errno));
|
xf86Msg(X_WARNING, "%s: VT_ACTIVATE failed: %s\n", from, strerror(errno));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_WAITACTIVE, vt));
|
SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_WAITACTIVE, vt));
|
||||||
if (ret < 0)
|
if (ret < 0) {
|
||||||
FatalError("%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno));
|
xf86Msg(X_WARNING, "%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
|
@ -208,7 +214,8 @@ xf86OpenConsole(void)
|
||||||
/*
|
/*
|
||||||
* now get the VT. This _must_ succeed, or else fail completely.
|
* now get the VT. This _must_ succeed, or else fail completely.
|
||||||
*/
|
*/
|
||||||
switch_to(xf86Info.vtno, "xf86OpenConsole");
|
if (!switch_to(xf86Info.vtno, "xf86OpenConsole"))
|
||||||
|
FatalError("xf86OpenConsole: Switching VT failed\n");
|
||||||
|
|
||||||
SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_GETMODE, &VT));
|
SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_GETMODE, &VT));
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
@ -269,7 +276,8 @@ xf86OpenConsole(void)
|
||||||
else { /* serverGeneration != 1 */
|
else { /* serverGeneration != 1 */
|
||||||
if (!xf86Info.ShareVTs && xf86Info.autoVTSwitch) {
|
if (!xf86Info.ShareVTs && xf86Info.autoVTSwitch) {
|
||||||
/* now get the VT */
|
/* now get the VT */
|
||||||
switch_to(xf86Info.vtno, "xf86OpenConsole");
|
if (!switch_to(xf86Info.vtno, "xf86OpenConsole"))
|
||||||
|
FatalError("xf86OpenConsole: Switching VT failed\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,8 +40,6 @@
|
||||||
|
|
||||||
#include "systemd-logind.h"
|
#include "systemd-logind.h"
|
||||||
|
|
||||||
#define DBUS_TIMEOUT 500 /* Wait max 0.5 seconds */
|
|
||||||
|
|
||||||
struct systemd_logind_info {
|
struct systemd_logind_info {
|
||||||
DBusConnection *conn;
|
DBusConnection *conn;
|
||||||
char *session;
|
char *session;
|
||||||
|
@ -130,7 +128,7 @@ systemd_logind_take_fd(int _major, int _minor, const char *path,
|
||||||
}
|
}
|
||||||
|
|
||||||
reply = dbus_connection_send_with_reply_and_block(info->conn, msg,
|
reply = dbus_connection_send_with_reply_and_block(info->conn, msg,
|
||||||
DBUS_TIMEOUT, &error);
|
DBUS_TIMEOUT_USE_DEFAULT, &error);
|
||||||
if (!reply) {
|
if (!reply) {
|
||||||
LogMessage(X_ERROR, "systemd-logind: failed to take device %s: %s\n",
|
LogMessage(X_ERROR, "systemd-logind: failed to take device %s: %s\n",
|
||||||
path, error.message);
|
path, error.message);
|
||||||
|
@ -207,7 +205,7 @@ systemd_logind_release_fd(int _major, int _minor, int fd)
|
||||||
}
|
}
|
||||||
|
|
||||||
reply = dbus_connection_send_with_reply_and_block(info->conn, msg,
|
reply = dbus_connection_send_with_reply_and_block(info->conn, msg,
|
||||||
DBUS_TIMEOUT, &error);
|
DBUS_TIMEOUT_USE_DEFAULT, &error);
|
||||||
if (!reply)
|
if (!reply)
|
||||||
LogMessage(X_ERROR, "systemd-logind: failed to release device: %s\n",
|
LogMessage(X_ERROR, "systemd-logind: failed to release device: %s\n",
|
||||||
error.message);
|
error.message);
|
||||||
|
@ -289,7 +287,7 @@ systemd_logind_ack_pause(struct systemd_logind_info *info,
|
||||||
}
|
}
|
||||||
|
|
||||||
reply = dbus_connection_send_with_reply_and_block(info->conn, msg,
|
reply = dbus_connection_send_with_reply_and_block(info->conn, msg,
|
||||||
DBUS_TIMEOUT, &error);
|
DBUS_TIMEOUT_USE_DEFAULT, &error);
|
||||||
if (!reply)
|
if (!reply)
|
||||||
LogMessage(X_ERROR, "systemd-logind: failed to ack pause: %s\n",
|
LogMessage(X_ERROR, "systemd-logind: failed to ack pause: %s\n",
|
||||||
error.message);
|
error.message);
|
||||||
|
@ -313,6 +311,9 @@ message_filter(DBusConnection * connection, DBusMessage * message, void *data)
|
||||||
dbus_int32_t major, minor;
|
dbus_int32_t major, minor;
|
||||||
char *pause_str;
|
char *pause_str;
|
||||||
|
|
||||||
|
if (dbus_message_get_type (message) != DBUS_MESSAGE_TYPE_SIGNAL)
|
||||||
|
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||||
|
|
||||||
dbus_error_init(&error);
|
dbus_error_init(&error);
|
||||||
|
|
||||||
if (dbus_message_is_signal(message,
|
if (dbus_message_is_signal(message,
|
||||||
|
@ -454,7 +455,7 @@ connect_hook(DBusConnection *connection, void *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
reply = dbus_connection_send_with_reply_and_block(connection, msg,
|
reply = dbus_connection_send_with_reply_and_block(connection, msg,
|
||||||
DBUS_TIMEOUT, &error);
|
DBUS_TIMEOUT_USE_DEFAULT, &error);
|
||||||
if (!reply) {
|
if (!reply) {
|
||||||
LogMessage(X_ERROR, "systemd-logind: failed to get session: %s\n",
|
LogMessage(X_ERROR, "systemd-logind: failed to get session: %s\n",
|
||||||
error.message);
|
error.message);
|
||||||
|
@ -489,7 +490,7 @@ connect_hook(DBusConnection *connection, void *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
reply = dbus_connection_send_with_reply_and_block(connection, msg,
|
reply = dbus_connection_send_with_reply_and_block(connection, msg,
|
||||||
DBUS_TIMEOUT, &error);
|
DBUS_TIMEOUT_USE_DEFAULT, &error);
|
||||||
if (!reply) {
|
if (!reply) {
|
||||||
LogMessage(X_ERROR, "systemd-logind: TakeControl failed: %s\n",
|
LogMessage(X_ERROR, "systemd-logind: TakeControl failed: %s\n",
|
||||||
error.message);
|
error.message);
|
||||||
|
@ -561,7 +562,7 @@ systemd_logind_release_control(struct systemd_logind_info *info)
|
||||||
}
|
}
|
||||||
|
|
||||||
reply = dbus_connection_send_with_reply_and_block(info->conn, msg,
|
reply = dbus_connection_send_with_reply_and_block(info->conn, msg,
|
||||||
DBUS_TIMEOUT, &error);
|
DBUS_TIMEOUT_USE_DEFAULT, &error);
|
||||||
if (!reply) {
|
if (!reply) {
|
||||||
LogMessage(X_ERROR, "systemd-logind: ReleaseControl failed: %s\n",
|
LogMessage(X_ERROR, "systemd-logind: ReleaseControl failed: %s\n",
|
||||||
error.message);
|
error.message);
|
||||||
|
|
|
@ -178,7 +178,7 @@ xf86InstallSIGIOHandler(int fd, void (*f) (int, void *), void *closure)
|
||||||
}
|
}
|
||||||
sigemptyset(&sa.sa_mask);
|
sigemptyset(&sa.sa_mask);
|
||||||
sigaddset(&sa.sa_mask, SIGIO);
|
sigaddset(&sa.sa_mask, SIGIO);
|
||||||
sa.sa_flags = 0;
|
sa.sa_flags = SA_RESTART;
|
||||||
sa.sa_handler = xf86SIGIO;
|
sa.sa_handler = xf86SIGIO;
|
||||||
sigaction(SIGIO, &sa, &osa);
|
sigaction(SIGIO, &sa, &osa);
|
||||||
xf86SigIOFuncs[i].fd = fd;
|
xf86SigIOFuncs[i].fd = fd;
|
||||||
|
|
|
@ -183,11 +183,7 @@ extern _X_HIDDEN char xf86SolarisFbDev[PATH_MAX];
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
#ifdef __linux__
|
|
||||||
#include <termio.h>
|
|
||||||
#else /* __GLIBC__ */
|
|
||||||
#include <termios.h>
|
#include <termios.h>
|
||||||
#endif
|
|
||||||
#ifdef __sparc__
|
#ifdef __sparc__
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -350,13 +350,25 @@ BEGIN {
|
||||||
if (sdk) {
|
if (sdk) {
|
||||||
n = 3;
|
n = 3;
|
||||||
|
|
||||||
|
# skip line numbers GCC 5 adds before __attribute__
|
||||||
|
while ($n == "" || $0 ~ /^# [0-9]+ "/) {
|
||||||
|
getline;
|
||||||
|
n = 1;
|
||||||
|
}
|
||||||
|
|
||||||
# skip attribute, if any
|
# skip attribute, if any
|
||||||
while ($n ~ /^(__attribute__|__global)/ ||
|
while ($n ~ /^(__attribute__|__global)/ ||
|
||||||
# skip modifiers, if any
|
# skip modifiers, if any
|
||||||
$n ~ /^\*?(unsigned|const|volatile|struct|_X_EXPORT)$/ ||
|
$n ~ /^\*?(unsigned|const|volatile|struct|_X_EXPORT)$/ ||
|
||||||
# skip pointer
|
# skip pointer
|
||||||
$n ~ /^[a-zA-Z0-9_]*\*$/)
|
$n ~ /^[a-zA-Z0-9_]*\*$/) {
|
||||||
n++;
|
n++;
|
||||||
|
# skip line numbers GCC 5 adds after __attribute__
|
||||||
|
while ($n == "" || $0 ~ /^# [0-9]+ "/) {
|
||||||
|
getline;
|
||||||
|
n = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# type specifier may not be set, as in
|
# type specifier may not be set, as in
|
||||||
# extern _X_EXPORT unsigned name(...)
|
# extern _X_EXPORT unsigned name(...)
|
||||||
|
|
|
@ -233,9 +233,7 @@ X86EMU_dump_memory(u16 seg, u16 off, u32 amt)
|
||||||
u32 start = off & 0xfffffff0;
|
u32 start = off & 0xfffffff0;
|
||||||
u32 end = (off + 16) & 0xfffffff0;
|
u32 end = (off + 16) & 0xfffffff0;
|
||||||
u32 i;
|
u32 i;
|
||||||
u32 current;
|
|
||||||
|
|
||||||
current = start;
|
|
||||||
while (end <= off + amt) {
|
while (end <= off + amt) {
|
||||||
printk("%04x:%04x ", seg, start);
|
printk("%04x:%04x ", seg, start);
|
||||||
for (i = start; i < off; i++)
|
for (i = start; i < off; i++)
|
||||||
|
@ -261,8 +259,6 @@ x86emu_single_step(void)
|
||||||
static int breakpoint;
|
static int breakpoint;
|
||||||
static int noDecode = 1;
|
static int noDecode = 1;
|
||||||
|
|
||||||
char *p;
|
|
||||||
|
|
||||||
if (DEBUG_BREAK()) {
|
if (DEBUG_BREAK()) {
|
||||||
if (M.x86.saved_ip != breakpoint) {
|
if (M.x86.saved_ip != breakpoint) {
|
||||||
return;
|
return;
|
||||||
|
@ -279,7 +275,7 @@ x86emu_single_step(void)
|
||||||
offset = M.x86.saved_ip;
|
offset = M.x86.saved_ip;
|
||||||
while (!done) {
|
while (!done) {
|
||||||
printk("-");
|
printk("-");
|
||||||
p = fgets(s, 1023, stdin);
|
(void)fgets(s, 1023, stdin);
|
||||||
cmd = parse_line(s, ps, &ntok);
|
cmd = parse_line(s, ps, &ntok);
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case 'u':
|
case 'u':
|
||||||
|
|
|
@ -16,6 +16,10 @@ is" without express or implied warranty.
|
||||||
#include <xnest-config.h>
|
#include <xnest-config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
#include <X11/Xwindows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <X11/X.h>
|
#include <X11/X.h>
|
||||||
#include <X11/Xproto.h>
|
#include <X11/Xproto.h>
|
||||||
#include <xcb/xcb_keysyms.h>
|
#include <xcb/xcb_keysyms.h>
|
||||||
|
|
|
@ -52,6 +52,7 @@
|
||||||
|
|
||||||
#include "visualConfigs.h"
|
#include "visualConfigs.h"
|
||||||
#include "dri.h"
|
#include "dri.h"
|
||||||
|
#include "extension_string.h"
|
||||||
|
|
||||||
#include "darwin.h"
|
#include "darwin.h"
|
||||||
#define GLAQUA_DEBUG_MSG(msg, args ...) ASL_LOG(ASL_LEVEL_DEBUG, "GLXAqua", \
|
#define GLAQUA_DEBUG_MSG(msg, args ...) ASL_LOG(ASL_LEVEL_DEBUG, "GLXAqua", \
|
||||||
|
@ -111,6 +112,10 @@ typedef struct __GLXAquaDrawable __GLXAquaDrawable;
|
||||||
*/
|
*/
|
||||||
struct __GLXAquaScreen {
|
struct __GLXAquaScreen {
|
||||||
__GLXscreen base;
|
__GLXscreen base;
|
||||||
|
|
||||||
|
/* Supported GLX extensions */
|
||||||
|
unsigned char glx_enable_bits[__GLX_EXT_BYTES];
|
||||||
|
|
||||||
int index;
|
int index;
|
||||||
int num_vis;
|
int num_vis;
|
||||||
};
|
};
|
||||||
|
@ -541,13 +546,33 @@ __glXAquaScreenProbe(ScreenPtr pScreen)
|
||||||
|
|
||||||
screen->base.GLXmajor = 1;
|
screen->base.GLXmajor = 1;
|
||||||
screen->base.GLXminor = 4;
|
screen->base.GLXminor = 4;
|
||||||
screen->base.GLXextensions = strdup("GLX_SGIX_fbconfig "
|
|
||||||
"GLX_SGIS_multisample "
|
|
||||||
"GLX_ARB_multisample "
|
|
||||||
"GLX_EXT_visual_info "
|
|
||||||
"GLX_EXT_import_context ");
|
|
||||||
|
|
||||||
/*We may be able to add more GLXextensions at a later time. */
|
memset(screen->glx_enable_bits, 0, __GLX_EXT_BYTES);
|
||||||
|
|
||||||
|
__glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_visual_info");
|
||||||
|
__glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_visual_rating");
|
||||||
|
__glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_import_context");
|
||||||
|
__glXEnableExtension(screen->glx_enable_bits, "GLX_OML_swap_method");
|
||||||
|
__glXEnableExtension(screen->glx_enable_bits, "GLX_SGIX_fbconfig");
|
||||||
|
|
||||||
|
__glXEnableExtension(screen->glx_enable_bits, "GLX_SGIS_multisample");
|
||||||
|
__glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_multisample");
|
||||||
|
|
||||||
|
//__glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_create_context");
|
||||||
|
//__glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_create_context_profile");
|
||||||
|
|
||||||
|
// Generate the GLX extensions string (overrides that set by __glXScreenInit())
|
||||||
|
{
|
||||||
|
unsigned int buffer_size =
|
||||||
|
__glXGetExtensionString(screen->glx_enable_bits, NULL);
|
||||||
|
if (buffer_size > 0) {
|
||||||
|
free(screen->base.GLXextensions);
|
||||||
|
|
||||||
|
screen->base.GLXextensions = xnfalloc(buffer_size);
|
||||||
|
__glXGetExtensionString(screen->glx_enable_bits,
|
||||||
|
screen->base.GLXextensions);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return &screen->base;
|
return &screen->base;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1069,12 +1069,12 @@ X11ApplicationCanEnterRandR(void)
|
||||||
if (!XQuartzIsRootless)
|
if (!XQuartzIsRootless)
|
||||||
QuartzShowFullscreen(FALSE);
|
QuartzShowFullscreen(FALSE);
|
||||||
|
|
||||||
switch (NSRunAlertPanel(title, msg,
|
switch (NSRunAlertPanel(title, @"%@",
|
||||||
NSLocalizedString(@"Allow",
|
NSLocalizedString(@"Allow",
|
||||||
@""),
|
@""),
|
||||||
NSLocalizedString(@"Cancel",
|
NSLocalizedString(@"Cancel",
|
||||||
@""),
|
@""),
|
||||||
NSLocalizedString(@"Always Allow", @""))) {
|
NSLocalizedString(@"Always Allow", @""), msg)) {
|
||||||
case NSAlertOtherReturn:
|
case NSAlertOtherReturn:
|
||||||
[X11App prefs_set_boolean:@PREFS_NO_RANDR_ALERT value:YES];
|
[X11App prefs_set_boolean:@PREFS_NO_RANDR_ALERT value:YES];
|
||||||
[X11App prefs_synchronize];
|
[X11App prefs_synchronize];
|
||||||
|
@ -1122,10 +1122,10 @@ X11ApplicationFatalError(const char *f, va_list args)
|
||||||
*/
|
*/
|
||||||
dispatch_sync(dispatch_get_main_queue(), ^{
|
dispatch_sync(dispatch_get_main_queue(), ^{
|
||||||
if (NSAlertDefaultReturn ==
|
if (NSAlertDefaultReturn ==
|
||||||
NSRunAlertPanel (title, msg,
|
NSRunAlertPanel (title, @"%@",
|
||||||
NSLocalizedString (@"Quit", @""),
|
NSLocalizedString (@"Quit", @""),
|
||||||
NSLocalizedString (
|
NSLocalizedString (@"Report...", @""),
|
||||||
@"Report...", @""), nil)) {
|
nil, msg)) {
|
||||||
exit (EXIT_FAILURE);
|
exit (EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1160,9 +1160,8 @@ check_xinitrc(void)
|
||||||
@"Startup xinitrc dialog");
|
@"Startup xinitrc dialog");
|
||||||
|
|
||||||
if (NSAlertDefaultReturn ==
|
if (NSAlertDefaultReturn ==
|
||||||
NSRunAlertPanel(nil, msg, NSLocalizedString(@"Yes", @""),
|
NSRunAlertPanel(nil, @"%@", NSLocalizedString(@"Yes", @""),
|
||||||
NSLocalizedString(@"No",
|
NSLocalizedString(@"No", @""), nil, msg)) {
|
||||||
@""), nil)) {
|
|
||||||
char buf2[1024];
|
char buf2[1024];
|
||||||
int i = -1;
|
int i = -1;
|
||||||
|
|
||||||
|
@ -1239,8 +1238,16 @@ X11ApplicationMain(int argc, char **argv, char **envp)
|
||||||
QuartzModeBundleInit();
|
QuartzModeBundleInit();
|
||||||
|
|
||||||
/* Calculate the height of the menubar so we can avoid it. */
|
/* Calculate the height of the menubar so we can avoid it. */
|
||||||
aquaMenuBarHeight = NSHeight([[NSScreen mainScreen] frame]) -
|
aquaMenuBarHeight = [[NSApp mainMenu] menuBarHeight];
|
||||||
NSMaxY([[NSScreen mainScreen] visibleFrame]);
|
#if ! __LP64__
|
||||||
|
if (!aquaMenuBarHeight) {
|
||||||
|
aquaMenuBarHeight = [NSMenuView menuBarHeight];
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (!aquaMenuBarHeight) {
|
||||||
|
NSScreen* primaryScreen = [[NSScreen screens] objectAtIndex:0];
|
||||||
|
aquaMenuBarHeight = NSHeight([primaryScreen frame]) - NSMaxY([primaryScreen visibleFrame]);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef HAVE_LIBDISPATCH
|
#ifdef HAVE_LIBDISPATCH
|
||||||
eventTranslationQueue = dispatch_queue_create(
|
eventTranslationQueue = dispatch_queue_create(
|
||||||
|
|
|
@ -364,7 +364,7 @@ extern char *bundle_id_prefix;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
|
||||||
if (asl_log_descriptor) {
|
if (&asl_log_descriptor) {
|
||||||
char *asl_sender;
|
char *asl_sender;
|
||||||
aslmsg amsg = asl_new(ASL_TYPE_MSG);
|
aslmsg amsg = asl_new(ASL_TYPE_MSG);
|
||||||
assert(amsg);
|
assert(amsg);
|
||||||
|
@ -414,7 +414,7 @@ extern char *bundle_id_prefix;
|
||||||
|
|
||||||
case 0: /* child2 */
|
case 0: /* child2 */
|
||||||
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
|
||||||
if (asl_log_descriptor) {
|
if (&asl_log_descriptor) {
|
||||||
/* Replace our stdout/stderr */
|
/* Replace our stdout/stderr */
|
||||||
dup2(stdout_pipe[1], STDOUT_FILENO);
|
dup2(stdout_pipe[1], STDOUT_FILENO);
|
||||||
dup2(stderr_pipe[1], STDERR_FILENO);
|
dup2(stderr_pipe[1], STDERR_FILENO);
|
||||||
|
@ -443,7 +443,7 @@ extern char *bundle_id_prefix;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
|
||||||
if (asl_log_descriptor) {
|
if (&asl_log_descriptor) {
|
||||||
/* Close the write ends of the pipe */
|
/* Close the write ends of the pipe */
|
||||||
close(stdout_pipe[1]);
|
close(stdout_pipe[1]);
|
||||||
close(stderr_pipe[1]);
|
close(stderr_pipe[1]);
|
||||||
|
@ -929,14 +929,13 @@ extern char *bundle_id_prefix;
|
||||||
* and then run the alert on a timer? It seems to work here, so..
|
* and then run the alert on a timer? It seems to work here, so..
|
||||||
*/
|
*/
|
||||||
|
|
||||||
return (NSRunAlertPanel(title, msg, NSLocalizedString(@"Quit", @""),
|
NSInteger result = NSRunAlertPanel(title, @"%@", NSLocalizedString(@"Quit", @""),
|
||||||
NSLocalizedString(@"Cancel", @""), nil)
|
NSLocalizedString(@"Cancel", @""), nil, msg);
|
||||||
== NSAlertDefaultReturn) ? NSTerminateNow : NSTerminateCancel;
|
return (result == NSAlertDefaultReturn) ? NSTerminateNow : NSTerminateCancel;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) applicationWillTerminate:(NSNotification *)aNotification _X_NORETURN
|
- (void) applicationWillTerminate:(NSNotification *)aNotification _X_NORETURN
|
||||||
{
|
{
|
||||||
int remain;
|
|
||||||
[X11App prefs_synchronize];
|
[X11App prefs_synchronize];
|
||||||
|
|
||||||
/* shutdown the X server, it will exit () for us. */
|
/* shutdown the X server, it will exit () for us. */
|
||||||
|
|
|
@ -35,6 +35,19 @@
|
||||||
<string>sparkle.pem</string>
|
<string>sparkle.pem</string>
|
||||||
<key>SUFeedURL</key>
|
<key>SUFeedURL</key>
|
||||||
<string>http://xquartz.macosforge.org/downloads/sparkle/release.xml</string>
|
<string>http://xquartz.macosforge.org/downloads/sparkle/release.xml</string>
|
||||||
|
<key>NSAppTransportSecurity</key>
|
||||||
|
<dict>
|
||||||
|
<key>NSExceptionDomains</key>
|
||||||
|
<dict>
|
||||||
|
<key>macosforge.org</key>
|
||||||
|
<dict>
|
||||||
|
<key>NSIncludesSubdomains</key>
|
||||||
|
<true/>
|
||||||
|
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
#endif
|
#endif
|
||||||
<key>LSApplicationCategoryType</key>
|
<key>LSApplicationCategoryType</key>
|
||||||
<string>public.app-category.utilities</string>
|
<string>public.app-category.utilities</string>
|
||||||
|
|
|
@ -30,153 +30,123 @@ EXTRA_DIST = \
|
||||||
Info.plist.cpp \
|
Info.plist.cpp \
|
||||||
PkgInfo \
|
PkgInfo \
|
||||||
$(resource_DATA) \
|
$(resource_DATA) \
|
||||||
Resources/ar.lproj/InfoPlist.strings \
|
|
||||||
Resources/ar.lproj/Localizable.strings \
|
Resources/ar.lproj/Localizable.strings \
|
||||||
Resources/ar.lproj/locversion.plist \
|
Resources/ar.lproj/locversion.plist \
|
||||||
Resources/ar.lproj/main.nib/designable.nib \
|
Resources/ar.lproj/main.nib/designable.nib \
|
||||||
Resources/ar.lproj/main.nib/keyedobjects.nib \
|
Resources/ar.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/ca.lproj/InfoPlist.strings \
|
|
||||||
Resources/ca.lproj/Localizable.strings \
|
Resources/ca.lproj/Localizable.strings \
|
||||||
Resources/ca.lproj/locversion.plist \
|
Resources/ca.lproj/locversion.plist \
|
||||||
Resources/ca.lproj/main.nib/designable.nib \
|
Resources/ca.lproj/main.nib/designable.nib \
|
||||||
Resources/ca.lproj/main.nib/keyedobjects.nib \
|
Resources/ca.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/cs.lproj/InfoPlist.strings \
|
|
||||||
Resources/cs.lproj/Localizable.strings \
|
Resources/cs.lproj/Localizable.strings \
|
||||||
Resources/cs.lproj/locversion.plist \
|
Resources/cs.lproj/locversion.plist \
|
||||||
Resources/cs.lproj/main.nib/designable.nib \
|
Resources/cs.lproj/main.nib/designable.nib \
|
||||||
Resources/cs.lproj/main.nib/keyedobjects.nib \
|
Resources/cs.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/da.lproj/InfoPlist.strings \
|
|
||||||
Resources/da.lproj/Localizable.strings \
|
Resources/da.lproj/Localizable.strings \
|
||||||
Resources/da.lproj/locversion.plist \
|
Resources/da.lproj/locversion.plist \
|
||||||
Resources/da.lproj/main.nib/designable.nib \
|
Resources/da.lproj/main.nib/designable.nib \
|
||||||
Resources/da.lproj/main.nib/keyedobjects.nib \
|
Resources/da.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/Dutch.lproj/InfoPlist.strings \
|
|
||||||
Resources/Dutch.lproj/Localizable.strings \
|
Resources/Dutch.lproj/Localizable.strings \
|
||||||
Resources/Dutch.lproj/locversion.plist \
|
Resources/Dutch.lproj/locversion.plist \
|
||||||
Resources/Dutch.lproj/main.nib/designable.nib \
|
Resources/Dutch.lproj/main.nib/designable.nib \
|
||||||
Resources/Dutch.lproj/main.nib/keyedobjects.nib \
|
Resources/Dutch.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/el.lproj/InfoPlist.strings \
|
|
||||||
Resources/el.lproj/Localizable.strings \
|
Resources/el.lproj/Localizable.strings \
|
||||||
Resources/el.lproj/locversion.plist \
|
Resources/el.lproj/locversion.plist \
|
||||||
Resources/el.lproj/main.nib/designable.nib \
|
Resources/el.lproj/main.nib/designable.nib \
|
||||||
Resources/el.lproj/main.nib/keyedobjects.nib \
|
Resources/el.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/English.lproj/InfoPlist.strings \
|
|
||||||
Resources/English.lproj/Localizable.strings \
|
Resources/English.lproj/Localizable.strings \
|
||||||
Resources/English.lproj/locversion.plist \
|
Resources/English.lproj/locversion.plist \
|
||||||
Resources/English.lproj/main.nib/designable.nib \
|
Resources/English.lproj/main.nib/designable.nib \
|
||||||
Resources/English.lproj/main.nib/keyedobjects.nib \
|
Resources/English.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/fi.lproj/InfoPlist.strings \
|
|
||||||
Resources/fi.lproj/Localizable.strings \
|
Resources/fi.lproj/Localizable.strings \
|
||||||
Resources/fi.lproj/locversion.plist \
|
Resources/fi.lproj/locversion.plist \
|
||||||
Resources/fi.lproj/main.nib/designable.nib \
|
Resources/fi.lproj/main.nib/designable.nib \
|
||||||
Resources/fi.lproj/main.nib/keyedobjects.nib \
|
Resources/fi.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/French.lproj/InfoPlist.strings \
|
|
||||||
Resources/French.lproj/Localizable.strings \
|
Resources/French.lproj/Localizable.strings \
|
||||||
Resources/French.lproj/locversion.plist \
|
Resources/French.lproj/locversion.plist \
|
||||||
Resources/French.lproj/main.nib/designable.nib \
|
Resources/French.lproj/main.nib/designable.nib \
|
||||||
Resources/French.lproj/main.nib/keyedobjects.nib \
|
Resources/French.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/German.lproj/InfoPlist.strings \
|
|
||||||
Resources/German.lproj/Localizable.strings \
|
Resources/German.lproj/Localizable.strings \
|
||||||
Resources/German.lproj/locversion.plist \
|
Resources/German.lproj/locversion.plist \
|
||||||
Resources/German.lproj/main.nib/designable.nib \
|
Resources/German.lproj/main.nib/designable.nib \
|
||||||
Resources/German.lproj/main.nib/keyedobjects.nib \
|
Resources/German.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/he.lproj/InfoPlist.strings \
|
|
||||||
Resources/he.lproj/Localizable.strings \
|
Resources/he.lproj/Localizable.strings \
|
||||||
Resources/he.lproj/locversion.plist \
|
Resources/he.lproj/locversion.plist \
|
||||||
Resources/he.lproj/main.nib/designable.nib \
|
Resources/he.lproj/main.nib/designable.nib \
|
||||||
Resources/he.lproj/main.nib/keyedobjects.nib \
|
Resources/he.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/hr.lproj/InfoPlist.strings \
|
|
||||||
Resources/hr.lproj/Localizable.strings \
|
Resources/hr.lproj/Localizable.strings \
|
||||||
Resources/hr.lproj/locversion.plist \
|
Resources/hr.lproj/locversion.plist \
|
||||||
Resources/hr.lproj/main.nib/designable.nib \
|
Resources/hr.lproj/main.nib/designable.nib \
|
||||||
Resources/hr.lproj/main.nib/keyedobjects.nib \
|
Resources/hr.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/hu.lproj/InfoPlist.strings \
|
|
||||||
Resources/hu.lproj/Localizable.strings \
|
Resources/hu.lproj/Localizable.strings \
|
||||||
Resources/hu.lproj/locversion.plist \
|
Resources/hu.lproj/locversion.plist \
|
||||||
Resources/hu.lproj/main.nib/designable.nib \
|
Resources/hu.lproj/main.nib/designable.nib \
|
||||||
Resources/hu.lproj/main.nib/keyedobjects.nib \
|
Resources/hu.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/Italian.lproj/InfoPlist.strings \
|
|
||||||
Resources/Italian.lproj/Localizable.strings \
|
Resources/Italian.lproj/Localizable.strings \
|
||||||
Resources/Italian.lproj/locversion.plist \
|
Resources/Italian.lproj/locversion.plist \
|
||||||
Resources/Italian.lproj/main.nib/designable.nib \
|
Resources/Italian.lproj/main.nib/designable.nib \
|
||||||
Resources/Italian.lproj/main.nib/keyedobjects.nib \
|
Resources/Italian.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/Japanese.lproj/InfoPlist.strings \
|
|
||||||
Resources/Japanese.lproj/Localizable.strings \
|
Resources/Japanese.lproj/Localizable.strings \
|
||||||
Resources/Japanese.lproj/locversion.plist \
|
Resources/Japanese.lproj/locversion.plist \
|
||||||
Resources/Japanese.lproj/main.nib/designable.nib \
|
Resources/Japanese.lproj/main.nib/designable.nib \
|
||||||
Resources/Japanese.lproj/main.nib/keyedobjects.nib \
|
Resources/Japanese.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/ko.lproj/InfoPlist.strings \
|
|
||||||
Resources/ko.lproj/Localizable.strings \
|
Resources/ko.lproj/Localizable.strings \
|
||||||
Resources/ko.lproj/locversion.plist \
|
Resources/ko.lproj/locversion.plist \
|
||||||
Resources/ko.lproj/main.nib/designable.nib \
|
Resources/ko.lproj/main.nib/designable.nib \
|
||||||
Resources/ko.lproj/main.nib/keyedobjects.nib \
|
Resources/ko.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/no.lproj/InfoPlist.strings \
|
|
||||||
Resources/no.lproj/Localizable.strings \
|
Resources/no.lproj/Localizable.strings \
|
||||||
Resources/no.lproj/locversion.plist \
|
Resources/no.lproj/locversion.plist \
|
||||||
Resources/no.lproj/main.nib/designable.nib \
|
Resources/no.lproj/main.nib/designable.nib \
|
||||||
Resources/no.lproj/main.nib/keyedobjects.nib \
|
Resources/no.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/pl.lproj/InfoPlist.strings \
|
|
||||||
Resources/pl.lproj/Localizable.strings \
|
Resources/pl.lproj/Localizable.strings \
|
||||||
Resources/pl.lproj/locversion.plist \
|
Resources/pl.lproj/locversion.plist \
|
||||||
Resources/pl.lproj/main.nib/designable.nib \
|
Resources/pl.lproj/main.nib/designable.nib \
|
||||||
Resources/pl.lproj/main.nib/keyedobjects.nib \
|
Resources/pl.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/pt.lproj/InfoPlist.strings \
|
|
||||||
Resources/pt.lproj/Localizable.strings \
|
Resources/pt.lproj/Localizable.strings \
|
||||||
Resources/pt.lproj/locversion.plist \
|
Resources/pt.lproj/locversion.plist \
|
||||||
Resources/pt.lproj/main.nib/designable.nib \
|
Resources/pt.lproj/main.nib/designable.nib \
|
||||||
Resources/pt.lproj/main.nib/keyedobjects.nib \
|
Resources/pt.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/pt_PT.lproj/InfoPlist.strings \
|
|
||||||
Resources/pt_PT.lproj/Localizable.strings \
|
Resources/pt_PT.lproj/Localizable.strings \
|
||||||
Resources/pt_PT.lproj/locversion.plist \
|
Resources/pt_PT.lproj/locversion.plist \
|
||||||
Resources/pt_PT.lproj/main.nib/designable.nib \
|
Resources/pt_PT.lproj/main.nib/designable.nib \
|
||||||
Resources/pt_PT.lproj/main.nib/keyedobjects.nib \
|
Resources/pt_PT.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/ro.lproj/InfoPlist.strings \
|
|
||||||
Resources/ro.lproj/Localizable.strings \
|
Resources/ro.lproj/Localizable.strings \
|
||||||
Resources/ro.lproj/locversion.plist \
|
Resources/ro.lproj/locversion.plist \
|
||||||
Resources/ro.lproj/main.nib/designable.nib \
|
Resources/ro.lproj/main.nib/designable.nib \
|
||||||
Resources/ro.lproj/main.nib/keyedobjects.nib \
|
Resources/ro.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/ru.lproj/InfoPlist.strings \
|
|
||||||
Resources/ru.lproj/Localizable.strings \
|
Resources/ru.lproj/Localizable.strings \
|
||||||
Resources/ru.lproj/locversion.plist \
|
Resources/ru.lproj/locversion.plist \
|
||||||
Resources/ru.lproj/main.nib/designable.nib \
|
Resources/ru.lproj/main.nib/designable.nib \
|
||||||
Resources/ru.lproj/main.nib/keyedobjects.nib \
|
Resources/ru.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/sk.lproj/InfoPlist.strings \
|
|
||||||
Resources/sk.lproj/Localizable.strings \
|
Resources/sk.lproj/Localizable.strings \
|
||||||
Resources/sk.lproj/locversion.plist \
|
Resources/sk.lproj/locversion.plist \
|
||||||
Resources/sk.lproj/main.nib/designable.nib \
|
Resources/sk.lproj/main.nib/designable.nib \
|
||||||
Resources/sk.lproj/main.nib/keyedobjects.nib \
|
Resources/sk.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/Spanish.lproj/InfoPlist.strings \
|
|
||||||
Resources/Spanish.lproj/Localizable.strings \
|
Resources/Spanish.lproj/Localizable.strings \
|
||||||
Resources/Spanish.lproj/locversion.plist \
|
Resources/Spanish.lproj/locversion.plist \
|
||||||
Resources/Spanish.lproj/main.nib/designable.nib \
|
Resources/Spanish.lproj/main.nib/designable.nib \
|
||||||
Resources/Spanish.lproj/main.nib/keyedobjects.nib \
|
Resources/Spanish.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/sv.lproj/InfoPlist.strings \
|
|
||||||
Resources/sv.lproj/Localizable.strings \
|
Resources/sv.lproj/Localizable.strings \
|
||||||
Resources/sv.lproj/locversion.plist \
|
Resources/sv.lproj/locversion.plist \
|
||||||
Resources/sv.lproj/main.nib/designable.nib \
|
Resources/sv.lproj/main.nib/designable.nib \
|
||||||
Resources/sv.lproj/main.nib/keyedobjects.nib \
|
Resources/sv.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/th.lproj/InfoPlist.strings \
|
|
||||||
Resources/th.lproj/Localizable.strings \
|
Resources/th.lproj/Localizable.strings \
|
||||||
Resources/th.lproj/locversion.plist \
|
Resources/th.lproj/locversion.plist \
|
||||||
Resources/th.lproj/main.nib/designable.nib \
|
Resources/th.lproj/main.nib/designable.nib \
|
||||||
Resources/th.lproj/main.nib/keyedobjects.nib \
|
Resources/th.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/tr.lproj/InfoPlist.strings \
|
|
||||||
Resources/tr.lproj/Localizable.strings \
|
Resources/tr.lproj/Localizable.strings \
|
||||||
Resources/tr.lproj/locversion.plist \
|
Resources/tr.lproj/locversion.plist \
|
||||||
Resources/tr.lproj/main.nib/designable.nib \
|
Resources/tr.lproj/main.nib/designable.nib \
|
||||||
Resources/tr.lproj/main.nib/keyedobjects.nib \
|
Resources/tr.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/uk.lproj/InfoPlist.strings \
|
|
||||||
Resources/uk.lproj/Localizable.strings \
|
Resources/uk.lproj/Localizable.strings \
|
||||||
Resources/uk.lproj/locversion.plist \
|
Resources/uk.lproj/locversion.plist \
|
||||||
Resources/uk.lproj/main.nib/designable.nib \
|
Resources/uk.lproj/main.nib/designable.nib \
|
||||||
Resources/uk.lproj/main.nib/keyedobjects.nib \
|
Resources/uk.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/X11.icns \
|
Resources/X11.icns \
|
||||||
Resources/zh_CN.lproj/InfoPlist.strings \
|
|
||||||
Resources/zh_CN.lproj/Localizable.strings \
|
Resources/zh_CN.lproj/Localizable.strings \
|
||||||
Resources/zh_CN.lproj/locversion.plist \
|
Resources/zh_CN.lproj/locversion.plist \
|
||||||
Resources/zh_CN.lproj/main.nib/designable.nib \
|
Resources/zh_CN.lproj/main.nib/designable.nib \
|
||||||
Resources/zh_CN.lproj/main.nib/keyedobjects.nib \
|
Resources/zh_CN.lproj/main.nib/keyedobjects.nib \
|
||||||
Resources/zh_TW.lproj/InfoPlist.strings \
|
|
||||||
Resources/zh_TW.lproj/Localizable.strings \
|
Resources/zh_TW.lproj/Localizable.strings \
|
||||||
Resources/zh_TW.lproj/locversion.plist \
|
Resources/zh_TW.lproj/locversion.plist \
|
||||||
Resources/zh_TW.lproj/main.nib/designable.nib \
|
Resources/zh_TW.lproj/main.nib/designable.nib \
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue