unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
blob f5cd0b9a9e16263c392d1b67ebea7e0a67b22323 1728 bytes (raw)
name: packages/patches/xf86-video-sis-fix-exa-crash.patch 	 # note: path name is non-authoritative(*)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
Fix X server crash when sis driver is used with EXA acceleration.

Source: http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/trusty/xserver-xorg-video-sis/trusty/revision/24/debian/patches/fix-exa-crash.diff

The patch was originally proposed by nihui:
https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-sis/+bug/1066464/comments/13

--- a/src/sis310_accel.c
+++ b/src/sis310_accel.c
@@ -1874,7 +1874,7 @@
 {
 	ScrnInfoPtr pScrn = xf86ScreenToScrn(pDst->drawable.pScreen);
 	SISPtr pSiS = SISPTR(pScrn);
-	unsigned char *dst = pDst->devPrivate.ptr;
+	unsigned char *dst = ((unsigned char *) pSiS->FbBase) + exaGetPixmapOffset(pDst);
 	int dst_pitch = exaGetPixmapPitch(pDst);
 
 	(pSiS->SyncAccel)(pScrn);
@@ -1882,7 +1882,7 @@
 	if(pDst->drawable.bitsPerPixel < 8)
 	   return FALSE;
 
-	dst += (x * pDst->drawable.bitsPerPixel / 8) + (y * src_pitch);
+	dst += (x * pDst->drawable.bitsPerPixel / 8) + (y * dst_pitch);
 	while(h--) {
 	   SiSMemCopyToVideoRam(pSiS, dst, (unsigned char *)src,
 				(w * pDst->drawable.bitsPerPixel / 8));
@@ -1953,7 +1953,7 @@
 {
 	ScrnInfoPtr pScrn = xf86ScreenToScrn(pSrc->drawable.pScreen);
 	SISPtr pSiS = SISPTR(pScrn);
-	unsigned char *src = pSrc->devPrivate.ptr;
+	unsigned char *src = ((unsigned char *) pSiS->FbBase) + exaGetPixmapOffset(pSrc);
 	int src_pitch = exaGetPixmapPitch(pSrc);
 	int size = src_pitch < dst_pitch ? src_pitch : dst_pitch;
 
@@ -1964,7 +1964,7 @@
 
 	src += (x * pSrc->drawable.bitsPerPixel / 8) + (y * src_pitch);
 	while(h--) {
-	   SiSMemCopyFromVideoRam(pSiS, (unsigned char *)dst, src, size);
+	   SiSMemCopyFromVideoRam(pSiS, (unsigned char *)dst, src, (w * pSrc->drawable.bitsPerPixel / 8));
 	   src += src_pitch;
 	   dst += dst_pitch;
 	}

debug log:

solving f5cd0b9a9e16263c392d1b67ebea7e0a67b22323 ...
found f5cd0b9a9e16263c392d1b67ebea7e0a67b22323 in https://git.savannah.gnu.org/cgit/guix.git

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).