mirror of
https://github.com/X11Libre/xf86-video-fbdev.git
synced 2026-03-24 17:45:26 +00:00
Compare commits
16 Commits
MODULAR_CO
...
xf86-video
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
436a2c094a | ||
|
|
5b54cbd70e | ||
|
|
b6fd370824 | ||
|
|
43236f5bfc | ||
|
|
643573a51f | ||
|
|
b5b1b7d731 | ||
|
|
abfc75fbcd | ||
|
|
a12d1ce572 | ||
|
|
6ed2e61542 | ||
|
|
24177f7218 | ||
|
|
c7b9e1a327 | ||
|
|
fe1fa4c016 | ||
|
|
41a763816d | ||
|
|
332464c43f | ||
|
|
cf1b33cb4d | ||
|
|
35c09ae4c4 |
4
.cvsignore → .gitignore
vendored
4
.cvsignore → .gitignore
vendored
@@ -1,5 +1,8 @@
|
||||
.deps
|
||||
.libs
|
||||
Makefile
|
||||
Makefile.in
|
||||
*~
|
||||
*.la
|
||||
*.lo
|
||||
aclocal.m4
|
||||
@@ -12,6 +15,7 @@ config.status
|
||||
config.sub
|
||||
configure
|
||||
depcomp
|
||||
fbdev.4
|
||||
install-sh
|
||||
libtool
|
||||
ltmain.sh
|
||||
23
COPYING
Normal file
23
COPYING
Normal file
@@ -0,0 +1,23 @@
|
||||
Copyright (C) 1994-2003 The XFree86 Project, Inc. All Rights Reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is fur-
|
||||
nished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
|
||||
NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
|
||||
NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of the XFree86 Project shall not
|
||||
be used in advertising or otherwise to promote the sale, use or other deal-
|
||||
ings in this Software without prior written authorization from the XFree86
|
||||
Project.
|
||||
37
ChangeLog
37
ChangeLog
@@ -1,3 +1,40 @@
|
||||
2006-05-19 Adam Jackson <ajax@freedesktop.org>
|
||||
|
||||
* configure.ac:
|
||||
* src/fbdev.c:
|
||||
Bump to 0.3.0
|
||||
|
||||
2006-05-18 Kevin E. Martin <kem-at-freedesktop-dot-org>
|
||||
|
||||
* src/fbdev.c: (FBDevShadowInit), (FBDevScreenInit),
|
||||
(FBDevCloseScreen):
|
||||
Fix ShadowFB support to work with recent miext/shadow changes from
|
||||
bug #5460 (Kevin Martin), and apply fix for miext/shadow crasher
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=6940 (Kristian
|
||||
Hoegsberg).
|
||||
|
||||
2006-04-06 Adam Jackson <ajax@freedesktop.org>
|
||||
|
||||
* configure.ac:
|
||||
* src/fbdev.c:
|
||||
Unlibcwrap. Bump server version requirement. Bump to 0.2.0.
|
||||
|
||||
2006-01-09 David Nusinow <gravity-at-freedesktop-dot-org>
|
||||
|
||||
* man/fbdev.man:
|
||||
Convert manpage to utf-8
|
||||
Bugzilla #1925 <https://bugs.freedesktop.org/show_bug.cgi?id=1925>
|
||||
|
||||
2005-12-20 Kevin E. Martin <kem-at-freedesktop-dot-org>
|
||||
|
||||
* configure.ac:
|
||||
Update package version for X11R7 release.
|
||||
|
||||
2005-12-14 Kevin E. Martin <kem-at-freedesktop-dot-org>
|
||||
|
||||
* configure.ac:
|
||||
Update package version number for final X11R7 release candidate.
|
||||
|
||||
2005-12-06 Kevin E. Martin <kem-at-freedesktop-dot-org>
|
||||
|
||||
* man/Makefile.am:
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
AC_PREREQ(2.57)
|
||||
AC_INIT([xf86-video-fbdev],
|
||||
0.1.0.3,
|
||||
0.3.1,
|
||||
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
|
||||
xf86-video-fbdev)
|
||||
|
||||
@@ -53,7 +53,7 @@ XORG_DRIVER_CHECK_EXT(RENDER, renderproto)
|
||||
XORG_DRIVER_CHECK_EXT(XV, videoproto)
|
||||
|
||||
# Checks for pkg-config packages
|
||||
PKG_CHECK_MODULES(XORG, [xorg-server xproto fontsproto $REQUIRED_MODULES])
|
||||
PKG_CHECK_MODULES(XORG, [xorg-server >= 1.0.99.901 xproto fontsproto $REQUIRED_MODULES])
|
||||
sdkdir=$(pkg-config --variable=sdkdir xorg-server)
|
||||
|
||||
# Checks for libraries.
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,4 +1,4 @@
|
||||
.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.man,v 1.3 2001/10/02 15:57:32 alanh Exp $
|
||||
.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.man,v 1.2 2001/01/27 18:20:47 dawes Exp $
|
||||
.\" shorthand for double quote that works everywhere.
|
||||
.ds q \N'34'
|
||||
.TH FBDEV __drivermansuffix__ __vendorversion__
|
||||
@@ -15,7 +15,7 @@ fbdev \- video driver for framebuffer device
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
.B fbdev
|
||||
is an XFree86 driver for framebuffer devices. This is a non-accelerated
|
||||
is an __xservername__ driver for framebuffer devices. This is a non-accelerated
|
||||
driver, the following framebuffer depths are supported: 8, 15, 16, 24.
|
||||
All visual types are supported for depth 8, and TrueColor visual is
|
||||
supported for the other depths. Multi-head configurations are supported.
|
||||
@@ -27,7 +27,7 @@ fbdev uses the os-specific submodule fbdevhw(__drivermansuffix__) to talk
|
||||
to the kernel
|
||||
device driver. Currently a fbdevhw module is available for linux.
|
||||
.SH CONFIGURATION DETAILS
|
||||
Please refer to XF86Config(__filemansuffix__) for general configuration
|
||||
Please refer to __xconfigfile__(__filemansuffix__) for general configuration
|
||||
details. This section only covers configuration details specific to
|
||||
this driver.
|
||||
.PP
|
||||
@@ -38,7 +38,8 @@ driver can pick up the currently used video mode from the framebuffer
|
||||
driver and will use it if there are no video modes configured.
|
||||
.PP
|
||||
For PCI boards you might have to add a BusID line to the Device
|
||||
section. See above for a sample line. You can use "XFree86 -scanpci"
|
||||
section. See above for a sample line. You can use \*q\__xservername__
|
||||
-scanpci\*q
|
||||
to figure out the correct values.
|
||||
.PP
|
||||
The following driver
|
||||
@@ -56,7 +57,7 @@ Enable rotation of the display. The supported values are "CW" (clockwise,
|
||||
90 degrees), "UD" (upside down, 180 degrees) and "CCW" (counter clockwise,
|
||||
270 degrees). Implies use of the shadow framebuffer layer. Default: off.
|
||||
.SH "SEE ALSO"
|
||||
XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1),
|
||||
__xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), xorgconfig(__appmansuffix__), Xserver(__appmansuffix__),
|
||||
X(__miscmansuffix__), fbdevhw(__drivermansuffix__)
|
||||
.SH AUTHORS
|
||||
Authors include: Gerd Knorr, Michel Dänzer, Geert Uytterhoeven
|
||||
Authors include: Gerd Knorr, Michel Dänzer, Geert Uytterhoeven
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
.deps
|
||||
.libs
|
||||
Makefile
|
||||
Makefile.in
|
||||
*.la
|
||||
*.lo
|
||||
151
src/fbdev.c
151
src/fbdev.c
@@ -1,18 +1,17 @@
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c,v 1.44 2003/09/24 02:43:21 dawes Exp $ */
|
||||
|
||||
/*
|
||||
* Authors: Alan Hourihane, <alanh@fairlite.demon.co.uk>
|
||||
* Michel Dänzer, <michdaen@iiic.ethz.ch>
|
||||
* Michel Dänzer, <michel@tungstengraphics.com>
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
|
||||
/* all driver need this */
|
||||
#include "xf86.h"
|
||||
#include "xf86_OSproc.h"
|
||||
#include "xf86_ansic.h"
|
||||
|
||||
#include "mipointer.h"
|
||||
#include "mibstore.h"
|
||||
@@ -35,17 +34,14 @@
|
||||
|
||||
#include "xf86xv.h"
|
||||
|
||||
#define DEBUG 0
|
||||
static Bool debug = 0;
|
||||
|
||||
#if DEBUG
|
||||
# define TRACE_ENTER(str) ErrorF("fbdev: " str " %d\n",pScrn->scrnIndex)
|
||||
# define TRACE_EXIT(str) ErrorF("fbdev: " str " done\n")
|
||||
# define TRACE(str) ErrorF("fbdev trace: " str "\n")
|
||||
#else
|
||||
# define TRACE_ENTER(str)
|
||||
# define TRACE_EXIT(str)
|
||||
# define TRACE(str)
|
||||
#endif
|
||||
#define TRACE_ENTER(str) \
|
||||
do { if (debug) ErrorF("fbdev: " str " %d\n",pScrn->scrnIndex); } while (0)
|
||||
#define TRACE_EXIT(str) \
|
||||
do { if (debug) ErrorF("fbdev: " str " done\n"); } while (0)
|
||||
#define TRACE(str) \
|
||||
do { if (debug) ErrorF("fbdev trace: " str "\n"); } while (0)
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/* prototypes */
|
||||
@@ -67,11 +63,6 @@ static Bool FBDevDriverFunc(ScrnInfoPtr pScrn, xorgDriverFuncOp op,
|
||||
|
||||
enum { FBDEV_ROTATE_NONE=0, FBDEV_ROTATE_CW=270, FBDEV_ROTATE_UD=180, FBDEV_ROTATE_CCW=90 };
|
||||
|
||||
/*static ShadowUpdateProc updateFuncs[] =
|
||||
{ shadowUpdatePacked, shadowUpdateRotate8_270, shadowUpdateRotate8_180, shadowUpdateRotate8_90,
|
||||
shadowUpdatePacked, shadowUpdateRotate16_270, shadowUpdateRotate16_180, shadowUpdateRotate16_90,
|
||||
shadowUpdatePacked, shadowUpdateRotate32_270, shadowUpdateRotate32_180, shadowUpdateRotate32_90 }; */
|
||||
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
||||
@@ -81,14 +72,12 @@ enum { FBDEV_ROTATE_NONE=0, FBDEV_ROTATE_CW=270, FBDEV_ROTATE_UD=180, FBDEV_ROTA
|
||||
*/
|
||||
static int pix24bpp = 0;
|
||||
|
||||
#define VERSION 4000
|
||||
#define FBDEV_VERSION 4000
|
||||
#define FBDEV_NAME "FBDEV"
|
||||
#define FBDEV_DRIVER_NAME "fbdev"
|
||||
#define FBDEV_MAJOR_VERSION 0
|
||||
#define FBDEV_MINOR_VERSION 1
|
||||
|
||||
_X_EXPORT DriverRec FBDEV = {
|
||||
VERSION,
|
||||
FBDEV_VERSION,
|
||||
FBDEV_DRIVER_NAME,
|
||||
#if 0
|
||||
"driver for linux framebuffer devices",
|
||||
@@ -114,13 +103,15 @@ static SymTabRec FBDevChipsets[] = {
|
||||
typedef enum {
|
||||
OPTION_SHADOW_FB,
|
||||
OPTION_ROTATE,
|
||||
OPTION_FBDEV
|
||||
OPTION_FBDEV,
|
||||
OPTION_DEBUG
|
||||
} FBDevOpts;
|
||||
|
||||
static const OptionInfoRec FBDevOptions[] = {
|
||||
{ OPTION_SHADOW_FB, "ShadowFB", OPTV_BOOLEAN, {0}, FALSE },
|
||||
{ OPTION_ROTATE, "Rotate", OPTV_STRING, {0}, FALSE },
|
||||
{ OPTION_FBDEV, "fbdev", OPTV_STRING, {0}, FALSE },
|
||||
{ OPTION_DEBUG, "debug", OPTV_BOOLEAN, {0}, FALSE },
|
||||
{ -1, NULL, OPTV_NONE, {0}, FALSE }
|
||||
};
|
||||
|
||||
@@ -140,7 +131,6 @@ static const char *fbSymbols[] = {
|
||||
|
||||
static const char *shadowSymbols[] = {
|
||||
"shadowAdd",
|
||||
"shadowAlloc",
|
||||
"shadowInit",
|
||||
"shadowSetup",
|
||||
"shadowUpdatePacked",
|
||||
@@ -199,7 +189,7 @@ static XF86ModuleVersionInfo FBDevVersRec =
|
||||
MODINFOSTRING1,
|
||||
MODINFOSTRING2,
|
||||
XORG_VERSION_CURRENT,
|
||||
FBDEV_MAJOR_VERSION, FBDEV_MINOR_VERSION, 0,
|
||||
PACKAGE_VERSION_MAJOR, PACKAGE_VERSION_MINOR, PACKAGE_VERSION_PATCHLEVEL,
|
||||
ABI_CLASS_VIDEODRV,
|
||||
ABI_VIDEODRV_VERSION,
|
||||
NULL,
|
||||
@@ -235,10 +225,11 @@ typedef struct {
|
||||
unsigned char* fbmem;
|
||||
int fboff;
|
||||
int lineLength;
|
||||
unsigned char* shadowmem;
|
||||
int rotate;
|
||||
Bool shadowFB;
|
||||
void *shadow;
|
||||
CloseScreenProcPtr CloseScreen;
|
||||
CreateScreenResourcesProcPtr CreateScreenResources;
|
||||
void (*PointerMoved)(int index, int x, int y);
|
||||
EntityInfoPtr pEnt;
|
||||
/* DGA info */
|
||||
@@ -360,7 +351,7 @@ FBDevProbe(DriverPtr drv, int flags)
|
||||
if (pScrn) {
|
||||
foundScreen = TRUE;
|
||||
|
||||
pScrn->driverVersion = VERSION;
|
||||
pScrn->driverVersion = FBDEV_VERSION;
|
||||
pScrn->driverName = FBDEV_DRIVER_NAME;
|
||||
pScrn->name = FBDEV_NAME;
|
||||
pScrn->Probe = FBDevProbe;
|
||||
@@ -422,7 +413,7 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags)
|
||||
return FALSE;
|
||||
default_depth = fbdevHWGetDepth(pScrn,&fbbpp);
|
||||
if (!xf86SetDepthBpp(pScrn, default_depth, default_depth, fbbpp,
|
||||
Support24bppFb | Support32bppFb | SupportConvert32to24 | PreferConvert32to24))
|
||||
Support24bppFb | Support32bppFb | SupportConvert32to24 | SupportConvert24to32))
|
||||
return FALSE;
|
||||
xf86PrintDepthBpp(pScrn);
|
||||
|
||||
@@ -475,6 +466,8 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags)
|
||||
/* use shadow framebuffer by default */
|
||||
fPtr->shadowFB = xf86ReturnOptValBool(fPtr->Options, OPTION_SHADOW_FB, TRUE);
|
||||
|
||||
debug = xf86ReturnOptValBool(fPtr->Options, OPTION_DEBUG, FALSE);
|
||||
|
||||
/* rotation */
|
||||
fPtr->rotate = FBDEV_ROTATE_NONE;
|
||||
if ((s = xf86GetOptValString(fPtr->Options, OPTION_ROTATE)))
|
||||
@@ -615,6 +608,50 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static Bool
|
||||
FBDevCreateScreenResources(ScreenPtr pScreen)
|
||||
{
|
||||
PixmapPtr pPixmap;
|
||||
ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
|
||||
FBDevPtr fPtr = FBDEVPTR(pScrn);
|
||||
Bool ret;
|
||||
|
||||
pScreen->CreateScreenResources = fPtr->CreateScreenResources;
|
||||
ret = pScreen->CreateScreenResources(pScreen);
|
||||
pScreen->CreateScreenResources = FBDevCreateScreenResources;
|
||||
|
||||
if (!ret)
|
||||
return FALSE;
|
||||
|
||||
pPixmap = pScreen->GetScreenPixmap(pScreen);
|
||||
|
||||
if (!shadowAdd(pScreen, pPixmap, fPtr->rotate ?
|
||||
shadowUpdateRotatePackedWeak() : shadowUpdatePackedWeak(),
|
||||
FBDevWindowLinear, fPtr->rotate, NULL)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static Bool
|
||||
FBDevShadowInit(ScreenPtr pScreen)
|
||||
{
|
||||
ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
|
||||
FBDevPtr fPtr = FBDEVPTR(pScrn);
|
||||
|
||||
if (!shadowSetup(pScreen)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
fPtr->CreateScreenResources = pScreen->CreateScreenResources;
|
||||
pScreen->CreateScreenResources = FBDevCreateScreenResources;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static Bool
|
||||
FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
||||
{
|
||||
@@ -622,7 +659,7 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
||||
FBDevPtr fPtr = FBDEVPTR(pScrn);
|
||||
VisualPtr visual;
|
||||
int init_picture = 0;
|
||||
int ret,flags,width,height;
|
||||
int ret, flags;
|
||||
int type;
|
||||
|
||||
TRACE_ENTER("FBDevScreenInit");
|
||||
@@ -679,11 +716,9 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
||||
|
||||
if(fPtr->rotate==FBDEV_ROTATE_CW || fPtr->rotate==FBDEV_ROTATE_CCW)
|
||||
{
|
||||
height = pScrn->virtualX;
|
||||
width = pScrn->displayWidth = pScrn->virtualY;
|
||||
} else {
|
||||
height = pScrn->virtualY;
|
||||
width = pScrn->virtualX;
|
||||
int tmp = pScrn->virtualX;
|
||||
pScrn->virtualX = pScrn->displayWidth = pScrn->virtualY;
|
||||
pScrn->virtualY = tmp;
|
||||
}
|
||||
|
||||
if(fPtr->rotate && !fPtr->PointerMoved) {
|
||||
@@ -691,19 +726,17 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
||||
pScrn->PointerMoved = FBDevPointerMoved;
|
||||
}
|
||||
|
||||
/* shadowfb */
|
||||
if (fPtr->shadowFB) {
|
||||
if ((fPtr->shadowmem = shadowAlloc(width, height,
|
||||
pScrn->bitsPerPixel)) == NULL) {
|
||||
xf86DrvMsg(scrnIndex,X_ERROR,
|
||||
"allocation of shadow framebuffer memory failed\n");
|
||||
return FALSE;
|
||||
}
|
||||
fPtr->fbstart = fPtr->fbmem + fPtr->fboff;
|
||||
|
||||
fPtr->fbstart = fPtr->shadowmem;
|
||||
} else {
|
||||
fPtr->shadowmem = NULL;
|
||||
fPtr->fbstart = fPtr->fbmem + fPtr->fboff;
|
||||
if (fPtr->shadowFB) {
|
||||
fPtr->shadow = xcalloc(1, pScrn->virtualX * pScrn->virtualY *
|
||||
pScrn->bitsPerPixel);
|
||||
|
||||
if (!fPtr->shadow) {
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
|
||||
"Failed to allocate shadow framebuffer\n");
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
switch ((type = fbdevHWGetType(pScrn)))
|
||||
@@ -736,8 +769,11 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
||||
case 16:
|
||||
case 24:
|
||||
case 32:
|
||||
ret = fbScreenInit(pScreen, fPtr->fbstart, width, height,
|
||||
pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth, pScrn->bitsPerPixel);
|
||||
ret = fbScreenInit(pScreen, fPtr->shadowFB ? fPtr->shadow
|
||||
: fPtr->fbstart, pScrn->virtualX,
|
||||
pScrn->virtualY, pScrn->xDpi,
|
||||
pScrn->yDpi, pScrn->displayWidth,
|
||||
pScrn->bitsPerPixel);
|
||||
init_picture = 1;
|
||||
break;
|
||||
default:
|
||||
@@ -775,7 +811,7 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
||||
default:
|
||||
xf86DrvMsg(scrnIndex, X_ERROR,
|
||||
"internal error: unrecognised hardware type (%d) "
|
||||
"encountered in FBDevScreenInit()\n");
|
||||
"encountered in FBDevScreenInit()\n", type);
|
||||
ret = FALSE;
|
||||
break;
|
||||
}
|
||||
@@ -802,11 +838,7 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
|
||||
"Render extension initialisation failed\n");
|
||||
|
||||
if (fPtr->shadowFB &&
|
||||
(!shadowSetup(pScreen) || !shadowAdd(pScreen, NULL,
|
||||
fPtr->rotate ? shadowUpdateRotatePackedWeak()
|
||||
: shadowUpdatePackedWeak(),
|
||||
FBDevWindowLinear, fPtr->rotate, NULL)) ) {
|
||||
if (fPtr->shadowFB && !FBDevShadowInit(pScreen)) {
|
||||
xf86DrvMsg(scrnIndex, X_ERROR,
|
||||
"shadow framebuffer initialization failed\n");
|
||||
return FALSE;
|
||||
@@ -909,8 +941,10 @@ FBDevCloseScreen(int scrnIndex, ScreenPtr pScreen)
|
||||
|
||||
fbdevHWRestore(pScrn);
|
||||
fbdevHWUnmapVidmem(pScrn);
|
||||
if (fPtr->shadowmem)
|
||||
xfree(fPtr->shadowmem);
|
||||
if (fPtr->shadow) {
|
||||
xfree(fPtr->shadow);
|
||||
fPtr->shadow = NULL;
|
||||
}
|
||||
if (fPtr->pDGAMode) {
|
||||
xfree(fPtr->pDGAMode);
|
||||
fPtr->pDGAMode = NULL;
|
||||
@@ -918,6 +952,7 @@ FBDevCloseScreen(int scrnIndex, ScreenPtr pScreen)
|
||||
}
|
||||
pScrn->vtSema = FALSE;
|
||||
|
||||
pScreen->CreateScreenResources = fPtr->CreateScreenResources;
|
||||
pScreen->CloseScreen = fPtr->CloseScreen;
|
||||
return (*pScreen->CloseScreen)(scrnIndex, pScreen);
|
||||
}
|
||||
@@ -943,7 +978,7 @@ FBDevWindowLinear(ScreenPtr pScreen, CARD32 row, CARD32 offset, int mode,
|
||||
else
|
||||
*size = fPtr->lineLength = fbdevHWGetLineLength(pScrn);
|
||||
|
||||
return ((CARD8 *)fPtr->fbmem + fPtr->fboff + row * fPtr->lineLength + offset);
|
||||
return ((CARD8 *)fPtr->fbstart + row * fPtr->lineLength + offset);
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
Reference in New Issue
Block a user