accessibility/mag: Fix all-black window bug.

Signed-off-by: B. Watson <yalhcru@gmail.com>

Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
B. Watson 2021-12-07 23:58:54 -05:00 committed by Willy Sudiarto Raharjo
parent 0e2fe6403b
commit 4f82040ebc
No known key found for this signature in database
GPG Key ID: 3F617144D7238786
4 changed files with 55 additions and 8 deletions

View File

@ -1,8 +1,5 @@
.\" Man page generated from reStructuredText.
.
.TH MAG 1 "2020-11-01" "20100913" "SlackBuilds.org"
.SH NAME
mag \- dynamic X11 screen magnifier
.
.nr rst2man-indent-level 0
.
@ -30,6 +27,9 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "MAG" 1 "2021-12-07" "20100913" "SlackBuilds.org"
.SH NAME
mag \- dynamic X11 screen magnifier
.\" RST source for mag(1) man page. Convert with:
.
.\" rst2man.py mag.rst > mag.1
@ -70,6 +70,10 @@ Original X placement.
.BI \-y \ Ycoord
Original Y placement.
.UNINDENT
.SH BUGS
.sp
There is no way to exit \fBmag\fP normally. Use e.g. \fBkillall mag\fP or
\fBxkill\fP to force it to quit.
.SH AUTHORS
.sp
mag was written by Danny Chouinard.

View File

@ -8,11 +8,15 @@
# VERSION comes from the last modified date on the homepage.
# 20211207 bkw: BUILD=2
# - fix blank window on -current (it shouldn't have worked on 14.2 either).
# - add BUGS to man page (no way to exit mag).
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=mag
VERSION=${VERSION:-20100913}
BUILD=${BUILD:-1}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@ -54,7 +58,22 @@ set -e
# In case you're wondering, -Wl,-s builds a stripped binary.
rm -rf $PKG
mkdir -p $PKG/usr/bin $OUTPUT
cd $PKG
# 20211207 bkw: we *do* have to patch it now, and we don't want
# to write to $CWD, so:
cat $CWD/$PRGNAM.c > $PRGNAM.c
# 20211207 bkw: silly mistake in the code: it was calling
# XDestroyImage(ximage) before the for loop that *uses* ximage.
# On 14.2's X, this was equivalent to a use-after-free, and worked
# accidentally most (or even all) of the time, but on -current's X,
# it results in a blank (all-black) window.
patch -p0 < $CWD/xdestroyimage.diff
gcc $SLKCFLAGS -Wl,-s -o $PKG/usr/bin/$PRGNAM $PRGNAM.c -lX11
rm $PRGNAM.c
# Man page written by SlackBuild author. Please don't include mag.rst
# in the package, it's the source for the man page only.

View File

@ -43,6 +43,12 @@ OPTIONS
-x Xcoord Original X placement.
-y Ycoord Original Y placement.
BUGS
====
There is no way to exit **mag** normally. Use e.g. **killall mag** or
**xkill** to force it to quit.
AUTHORS
=======

View File

@ -0,0 +1,18 @@
--- mag.c 2010-09-13 13:56:43.000000000 -0400
+++ mag.c.fixed 2021-12-07 23:23:49.729231259 -0500
@@ -174,7 +174,6 @@
ximage=XGetImage(display,root,x-sx,y-sy,width/zoom,height/zoom,AllPlanes,ZPixmap);
// fprintf(stderr,"XGetImage returns:%d\n",(int)ximage);
// XPutImage(display,main_win,the_GC,ximage,0,0,0,0,width,height);
- XDestroyImage(ximage);
for(sx=0;sx<width/zoom;sx++) {
for(sy=0;sy<height/zoom;sy++) {
pix=XGetPixel(ximage,sx,sy);
@@ -186,6 +185,7 @@
}
}
}
+ XDestroyImage(ximage);
XFlush(display);
} else {
usleep(30000);