configure.ac | 2 +- src/compat-api.h | 5 +++++ src/smi.h | 1 + src/smi_driver.c | 2 +- src/smi_exa.c | 4 ++++ src/smi_xaa.c | 18 +++++++++--------- 6 files changed, 21 insertions(+), 11 deletions(-)
New commits: commit d269962724b57e21142c9e1c6631a45a46d87b47 Author: Matt Turner <matts...@gmail.com> Date: Tue Jan 17 14:44:51 2017 -0800 xf86-video-siliconmotion 1.7.9 Signed-off-by: Matt Turner <matts...@gmail.com> diff --git a/configure.ac b/configure.ac index 431a564..ad388e1 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xf86-video-siliconmotion], - [1.7.8], + [1.7.9], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/siliconmotion], [xf86-video-siliconmotion]) commit e67f3949648c20e16ac756ae28ea4a2b4a1d0f4c Author: Adam Jackson <a...@redhat.com> Date: Tue Jul 19 10:03:56 2016 -0400 Adapt Block/WakeupHandler signature for ABI 23 Signed-off-by: Adam Jackson <a...@redhat.com> diff --git a/src/compat-api.h b/src/compat-api.h index 6bc946f..89976e4 100644 --- a/src/compat-api.h +++ b/src/compat-api.h @@ -75,8 +75,13 @@ #define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv +#if ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(23, 0) +#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout +#define BLOCKHANDLER_ARGS arg, pTimeout +#else #define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask #define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask +#endif #define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen #define CLOSE_SCREEN_ARGS pScreen commit 647e5a93d9387e3bc8d2c8569e3a5f996acfb169 Author: Thomas Klausner <w...@netbsd.org> Date: Mon Sep 14 18:36:32 2015 +0200 Use X11/Xarch.h for endian detection. Reviewed-by: Connor Behan <connor.be...@gmail.com> diff --git a/src/smi.h b/src/smi.h index 5e44892..2742c8d 100644 --- a/src/smi.h +++ b/src/smi.h @@ -34,6 +34,7 @@ authorization from the XFree86 Project and Silicon Motion. #include <string.h> #include <stdio.h> +#include <X11/Xarch.h> #include "xf86.h" #include "xf86_OSproc.h" diff --git a/src/smi_driver.c b/src/smi_driver.c index 2568637..8949cae 100644 --- a/src/smi_driver.c +++ b/src/smi_driver.c @@ -487,7 +487,7 @@ SMI_PreInit(ScrnInfoPtr pScrn, int flags) if (pScrn->depth > 8) { /* The defaults are OK for us */ rgb zeros = {0, 0, 0}; -#if __BYTE_ORDER == __BIG_ENDIAN +#if X_BYTE_ORDER == X_BIG_ENDIAN rgb masks = {0xff00,0xff0000,0xff000000}; #else rgb masks = {0, 0, 0}; diff --git a/src/smi_xaa.c b/src/smi_xaa.c index a878098..cd861a1 100644 --- a/src/smi_xaa.c +++ b/src/smi_xaa.c @@ -211,7 +211,7 @@ SMI_SetupForScreenToScreenCopy(ScrnInfoPtr pScrn, int xdir, int ydir, int rop, ENTER(); DEBUG("xdir=%d ydir=%d rop=%02X trans=%08X\n", xdir, ydir, rop, trans); -#if __BYTE_ORDER == __BIG_ENDIAN +#if X_BYTE_ORDER == X_BIG_ENDIAN if (pScrn->depth >= 24) trans = lswapl(trans); #endif @@ -296,7 +296,7 @@ SMI_SetupForSolidFill(ScrnInfoPtr pScrn, int color, int rop, | SMI_BITBLT | SMI_START_ENGINE; -#if __BYTE_ORDER == __BIG_ENDIAN +#if X_BYTE_ORDER == X_BIG_ENDIAN if (pScrn->depth >= 24) { /* because of the BGR values are in the MSB bytes, * 'white' is not possible and -1 has a different meaning. @@ -408,7 +408,7 @@ SMI_SetupForCPUToScreenColorExpandFill(ScrnInfoPtr pScrn, int fg, int bg, ENTER(); DEBUG("fg=%08X bg=%08X rop=%02X\n", fg, bg, rop); -#if __BYTE_ORDER == __BIG_ENDIAN +#if X_BYTE_ORDER == X_BIG_ENDIAN if (pScrn->depth >= 24) { /* see remark elswere */ if (fg == 0x7FFFFFFF) @@ -431,7 +431,7 @@ SMI_SetupForCPUToScreenColorExpandFill(ScrnInfoPtr pScrn, int fg, int bg, WRITE_DPR(pSmi, 0x18, ~fg); WRITE_DPR(pSmi, 0x20, fg); } else { -#if __BYTE_ORDER == __BIG_ENDIAN +#if X_BYTE_ORDER == X_BIG_ENDIAN if (bg == 0xFFFFFF7F) bg = -1; #endif @@ -498,7 +498,7 @@ SMI_SetupForMono8x8PatternFill(ScrnInfoPtr pScrn, int patx, int paty, int fg, DEBUG("patx=%08X paty=%08X fg=%08X bg=%08X rop=%02X\n", patx, paty, fg, bg, rop); -#if __BYTE_ORDER == __BIG_ENDIAN +#if X_BYTE_ORDER == X_BIG_ENDIAN if (pScrn->depth >= 24) { if (fg == 0x7FFFFFFF) fg = -1; @@ -524,7 +524,7 @@ SMI_SetupForMono8x8PatternFill(ScrnInfoPtr pScrn, int patx, int paty, int fg, WRITE_DPR(pSmi, 0x34, patx); WRITE_DPR(pSmi, 0x38, paty); } else { -#if __BYTE_ORDER == __BIG_ENDIAN +#if X_BYTE_ORDER == X_BIG_ENDIAN if (bg == 0xFFFFFF7F) bg = -1; #endif @@ -582,7 +582,7 @@ SMI_SetupForColor8x8PatternFill(ScrnInfoPtr pScrn, int patx, int paty, int rop, | SMI_COLOR_PATTERN | SMI_START_ENGINE; -#if __BYTE_ORDER == __BIG_ENDIAN +#if X_BYTE_ORDER == X_BIG_ENDIAN if (pScrn->depth >= 24) trans_color = lswapl(trans_color); #endif @@ -666,7 +666,7 @@ SMI_SetupForImageWrite(ScrnInfoPtr pScrn, int rop, unsigned int planemask, DEBUG("rop=%02X trans_color=%08X bpp=%d depth=%d\n", rop, trans_color, bpp, depth); -#if __BYTE_ORDER == __BIG_ENDIAN +#if X_BYTE_ORDER == X_BIG_ENDIAN if (pScrn->depth >= 24) trans_color = lswapl(trans_color); #endif @@ -675,7 +675,7 @@ SMI_SetupForImageWrite(ScrnInfoPtr pScrn, int rop, unsigned int planemask, | SMI_START_ENGINE; if (trans_color != -1) { -#if __BYTE_ORDER == __BIG_ENDIAN +#if X_BYTE_ORDER == X_BIG_ENDIAN if (trans_color == 0xFFFFFF7F) trans_color = -1; #endif commit a4e406c20ab0590214f779c2319ac7b92594a606 Author: Connor Behan <connor.be...@gmail.com> Date: Sun Aug 23 11:46:37 2015 -0400 Check for drawables before compositing This should prevent a crash when something like Cairo tries to composite a solid picture. Signed-off-by: Connor Behan <connor.be...@gmail.com> diff --git a/src/smi_exa.c b/src/smi_exa.c index 70298ed..67a6fdd 100644 --- a/src/smi_exa.c +++ b/src/smi_exa.c @@ -623,6 +623,10 @@ SMI_PrepareComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskPicture, Pi { ScrnInfoPtr pScrn = xf86ScreenToScrn(pDst->drawable.pScreen); SMIPtr pSmi = SMIPTR(pScrn); + + if (!pSrc) return FALSE; + if (!pSrcPicture->pDrawable) return FALSE; + int src_pitch = exaGetPixmapPitch(pSrc) / (pSrc->drawable.bitsPerPixel >> 3); int dst_pitch = exaGetPixmapPitch(pDst) / (pDst->drawable.bitsPerPixel >> 3);