From 39d250888e71292e9be9f802166523451ebd29fa Mon Sep 17 00:00:00 2001 From: dan Date: Mon, 2 Dec 2002 03:44:10 +0000 Subject: [PATCH] - Fixed Window Maker to compile with xinerama disabled. - Replaced --disable-xinerama with --enable-xinerama in configure (xinerama needs to be enabled when Window Maker is build because it's no longer enabled by default) --- configure.ac | 8 +-- src/xinerama.c | 48 ++++++++------- util/wmsetbg.c | 159 ++++++++++++++++++++++++++----------------------- 3 files changed, 115 insertions(+), 100 deletions(-) diff --git a/configure.ac b/configure.ac index 2242e907..cdc8936d 100644 --- a/configure.ac +++ b/configure.ac @@ -526,10 +526,10 @@ fi dnl XINERAMA support dnl ================ -xinerama=yes -AC_ARG_ENABLE(xinerama, -[ --disable-xinerama disable XInerama extension support], - xinerama=$enableval, xinerama=yes) +xinerama=no +AC_ARG_ENABLE(xinerama, +[ --enable-xinerama enable Xinerama extension support], + xinerama=$enableval, xinerama=no) if test "$xinerama" = yes; then AC_CHECK_LIB(Xinerama, XineramaQueryScreens, [XLIBS="-lXinerama $XLIBS" diff --git a/src/xinerama.c b/src/xinerama.c index c6e6f5c3..a7e3c47a 100644 --- a/src/xinerama.c +++ b/src/xinerama.c @@ -35,18 +35,20 @@ #include #endif -void wInitXinerama(WScreen *scr) +void +wInitXinerama(WScreen *scr) { - scr->xine_screens = 0; - scr->xine_count = 0; + scr->xine_primary_head = 0; #ifdef XINERAMA scr->xine_screens = XineramaQueryScreens(dpy, &scr->xine_count); +#else + scr->xine_count = 0; #endif - scr->xine_primary_head = 0; } -int wGetRectPlacementInfo(WScreen *scr, WMRect rect, int *flags) +int +wGetRectPlacementInfo(WScreen *scr, WMRect rect, int *flags) { int best; unsigned long area, totalArea; @@ -57,7 +59,7 @@ int wGetRectPlacementInfo(WScreen *scr, WMRect rect, int *flags) int rh = rect.size.height; wassertrv(flags!=NULL, 0); - + best = -1; area = 0; totalArea = 0; @@ -82,13 +84,13 @@ int wGetRectPlacementInfo(WScreen *scr, WMRect rect, int *flags) #ifdef XINERAMA for (i = 0; i < scr->xine_count; i++) { unsigned long a; - + a = calcIntersectionArea(rx, ry, rw, rh, scr->xine_screens[i].x_org, scr->xine_screens[i].y_org, scr->xine_screens[i].width, scr->xine_screens[i].height); - + totalArea += a; if (a > area) { if ( best != -1) @@ -111,8 +113,10 @@ int wGetRectPlacementInfo(WScreen *scr, WMRect rect, int *flags) /* get the head that covers most of the rectangle */ -int wGetHeadForRect(WScreen *scr, WMRect rect) +int +wGetHeadForRect(WScreen *scr, WMRect rect) { +#ifdef XINERAMA int best; unsigned long area; int i; @@ -126,17 +130,16 @@ int wGetHeadForRect(WScreen *scr, WMRect rect) best = -1; area = 0; - -#ifdef XINERAMA + for (i = 0; i < scr->xine_count; i++) { unsigned long a; - + a = calcIntersectionArea(rx, ry, rw, rh, scr->xine_screens[i].x_org, scr->xine_screens[i].y_org, scr->xine_screens[i].width, scr->xine_screens[i].height); - + if (a > area) { area = a; best = i; @@ -156,7 +159,8 @@ int wGetHeadForRect(WScreen *scr, WMRect rect) } -int wGetHeadForWindow(WWindow *wwin) +int +wGetHeadForWindow(WWindow *wwin) { WMRect rect; @@ -209,7 +213,8 @@ int wGetHeadForPoint(WScreen *scr, WMPoint point, int *flags) -int wGetHeadForPoint(WScreen *scr, WMPoint point) +int +wGetHeadForPoint(WScreen *scr, WMPoint point) { #ifdef XINERAMA int i; @@ -226,7 +231,8 @@ int wGetHeadForPoint(WScreen *scr, WMPoint point) } -int wGetHeadForPointerLocation(WScreen *scr) +int +wGetHeadForPointerLocation(WScreen *scr) { WMPoint point; Window bla; @@ -235,7 +241,7 @@ int wGetHeadForPointerLocation(WScreen *scr) if (!scr->xine_count) return scr->xine_primary_head; - + if (!XQueryPointer(dpy, scr->root_win, &bla, &bla, &point.x, &point.y, &ble, &ble, @@ -256,7 +262,7 @@ wGetRectForHead(WScreen *scr, int head) rect.pos.x = scr->xine_screens[head].x_org; rect.pos.y = scr->xine_screens[head].y_org; rect.size.width = scr->xine_screens[head].width; - rect.size.height = scr->xine_screens[head].height; + rect.size.height = scr->xine_screens[head].height; } else #endif /* XINERAMA */ { @@ -271,7 +277,8 @@ wGetRectForHead(WScreen *scr, int head) -WArea wGetUsableAreaForHead(WScreen *scr, int head, WArea *totalAreaPtr) +WArea +wGetUsableAreaForHead(WScreen *scr, int head, WArea *totalAreaPtr) { WArea totalArea, usableArea = scr->totalUsableArea; WMRect rect = wGetRectForHead(scr, head); @@ -292,7 +299,8 @@ WArea wGetUsableAreaForHead(WScreen *scr, int head, WArea *totalAreaPtr) } -WMPoint wGetPointToCenterRectInHead(WScreen *scr, int head, int width, int height) +WMPoint +wGetPointToCenterRectInHead(WScreen *scr, int head, int width, int height) { WMPoint p; WMRect rect = wGetRectForHead(scr, head); diff --git a/util/wmsetbg.c b/util/wmsetbg.c index 7e0ad594..41d275ff 100644 --- a/util/wmsetbg.c +++ b/util/wmsetbg.c @@ -25,7 +25,6 @@ /* * TODO: rewrite, too dirty */ - #include #include #include @@ -70,7 +69,7 @@ int scrX, scrY; #ifdef XINERAMA XineramaScreenInfo *xine_screens; -int xine_count; +int xine_count; #endif Bool smooth = False; @@ -125,82 +124,86 @@ loadImage(RContext *rc, char *file) } -void applyImage( RContext * rc, BackgroundTexture *texture, RImage *image, char type, int x, int y, int width, int height) { - +static void +applyImage(RContext *rc, BackgroundTexture *texture, RImage *image, char type, + int x, int y, int width, int height) +{ int w, h; Bool fimage = False; - switch( toupper(type)) { - case 'S': - case 'M': - if ( type == 'S') { - w = width; - h = height; - } else { - if ( image->width*height > image->height*width) { - w = width; - h = (width*image->height) / image->width; - } else { - w = (height*image->width) / image->height; - h = height; - } - } + switch (toupper(type)) { + case 'S': + case 'M': + if (type == 'S') { + w = width; + h = height; + } else { + if (image->width*height > image->height*width) { + w = width; + h = (width*image->height) / image->width; + } else { + w = (height*image->width) / image->height; + h = height; + } + } - if ( w != image->width || h != image->height) { - RImage * simage; + if (w != image->width || h != image->height) { + RImage * simage; - if ( smooth) { - simage = RSmoothScaleImage( image, w, h); - } else { - simage = RScaleImage( image, w, h); - } + if (smooth) { + simage = RSmoothScaleImage(image, w, h); + } else { + simage = RScaleImage(image, w, h); + } - if ( !simage) { - wwarning( "could not scale image:%s", RMessageForError(RErrorCode)); - return; - } - fimage = True; - image = simage; - } + if (!simage) { + wwarning("could not scale image:%s", RMessageForError(RErrorCode)); + return; + } + fimage = True; + image = simage; + } - /* fall through */ - case 'C': - { - Pixmap pixmap; + /* fall through */ + case 'C': + { + Pixmap pixmap; - if ( !RConvertImage(rc, image, &pixmap)) { - wwarning( "could not convert texture:%s", RMessageForError(RErrorCode)); - return; - } + if (!RConvertImage(rc, image, &pixmap)) { + wwarning("could not convert texture:%s", RMessageForError(RErrorCode)); + return; + } - if ( image->width != width || image->height != height) { - int sx, sy, w, h; + if (image->width != width || image->height != height) { + int sx, sy, w, h; - if ( image->height < height) { - h = image->height; - y += (height - h) / 2; - sy = 0; - } else { - sy = (image->height - height) / 2; - h = height; - } - if ( image->width < width) { - w = image->width; - x += (width - w) / 2; - sx = 0; - } else { - sx = (image->width - width) / 2; - w = width; - } + if (image->height < height) { + h = image->height; + y += (height - h) / 2; + sy = 0; + } else { + sy = (image->height - height) / 2; + h = height; + } + if (image->width < width) { + w = image->width; + x += (width - w) / 2; + sx = 0; + } else { + sx = (image->width - width) / 2; + w = width; + } - XCopyArea(dpy, pixmap, texture->pixmap, DefaultGC(dpy, scr), sx, sy, w, h, x, y); - } else - XCopyArea(dpy, pixmap, texture->pixmap, DefaultGC(dpy, scr), 0, 0, width, height, x, y); + XCopyArea(dpy, pixmap, texture->pixmap, DefaultGC(dpy, scr), sx, sy, w, h, x, y); + } else + XCopyArea(dpy, pixmap, texture->pixmap, DefaultGC(dpy, scr), 0, 0, width, height, x, y); - XFreePixmap(dpy, pixmap); - if ( fimage) RReleaseImage( image); - } - break; + XFreePixmap(dpy, pixmap); + if (fimage) { + RReleaseImage( image); + } + } + break; } } @@ -588,18 +591,22 @@ parseTexture(RContext *rc, char *text) texture->color = color; texture->width = scrWidth; texture->height = scrHeight; - - if ( xine_count) { - int i; - for ( i=0; i