1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-02-05 11:35:01 +00:00

Add Xinerama support for WDM (yay!!). Bump PORTREVISION.

George helped me better understand the Xinerama API.  Please note that
there is no support for specifying a particular physical display for
which the login frame should appear -- it will always choose physical
screen number zero.

Helped with this patch:		George Staikos <staikos@kde.org>
This commit is contained in:
Will Andrews 2002-04-04 14:02:12 +00:00
parent c364686d1f
commit 267499ca8a
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=57312
2 changed files with 63 additions and 1 deletions

View File

@ -7,6 +7,7 @@
PORTNAME= wdm
PORTVERSION= 1.20
PORTREVISION= 1
CATEGORIES= x11 windowmaker
MASTER_SITES= http://www.tcscs.com/wdm/wdm/ \
http://www.de.freebsd.org/de/gif/bsd/
@ -37,6 +38,13 @@ CONFIGURE_ARGS= --with-logdir=/var/log \
--with-defsystempath=/bin:/usr/bin:/sbin:/usr/sbin:${X11BASE}/bin \
--with-wmlist=wmaker:afterstep:blackbox:ctwm:enlightenment:fvwm:fvwm2:fvwm95:olvwm:qvwm:tvtwm
.include <bsd.port.pre.mk>
.if ${XFREE86_VERSION} == 4
CFLAGS+= -DHAVE_XINERAMA
CONFIGURE_ENV+= LIBS="-Wl,-export-dynamic ${X11BASE}/lib/libXinerama.a"
.endif
MAN1= wdm.1 wdmLogin.1
DAEMONPIC= daemon1-HQ-1280x960.jpg
@ -79,4 +87,4 @@ post-install:
fi
@${INSTALL_DATA} ${_DISTDIR}/${DAEMONPIC} ${PREFIX}/lib/X11/wdm/pixmaps
.include <bsd.port.mk>
.include <bsd.port.post.mk>

View File

@ -0,0 +1,54 @@
--- src/Login.c Tue Feb 29 06:17:01 2000
+++ src/Login.c.new Wed Apr 3 22:36:34 2002
@@ -24,6 +24,9 @@
#include <X11/xpm.h>
#include <X11/keysym.h>
#include <X11/cursorfont.h>
+#ifdef HAVE_XINERAMA
+#include <X11/extensions/Xinerama.h>
+#endif
#ifdef HAVE_X11_WINGS_H
#include <X11/WINGs.h>
#else
@@ -1195,6 +1198,10 @@
int main(int argc, char **argv)
{
WMScreen *scr;
+ int xine_count; int c;
+#ifdef HAVE_XINERAMA
+ XineramaScreenInfo *xine;
+#endif
ProgName = argv[0];
@@ -1210,8 +1217,28 @@
}
screen_number = DefaultScreen(dpy);
- screen_width = DisplayWidth(dpy,screen_number);
- screen_heigth = DisplayHeight(dpy,screen_number);
+#ifdef HAVE_XINERAMA
+ if (XineramaIsActive(dpy)) {
+ xine = XineramaQueryScreens(dpy, &xine_count);
+
+ if (xine != NULL) {
+ for (c = 0;c < xine_count;c++) {
+ if (xine[c].screen_number == 0) {
+ screen_width = xine[c].width;
+ screen_heigth = xine[c].height;
+ }
+ }
+ } else {
+ screen_width = DisplayWidth(dpy, screen_number);
+ screen_heigth = DisplayHeight(dpy, screen_number);
+ }
+ } else {
+#endif
+ screen_width = DisplayWidth(dpy,screen_number);
+ screen_heigth = DisplayHeight(dpy,screen_number);
+#ifdef HAVE_XINERAMA
+ }
+#endif
panel_X = (screen_width - panel_width)/2;
panel_Y = (screen_heigth - panel_heigth)/2;