diff options
author | Bernhard Rosenkraenzer <br@blankpage.ch> | 2010-04-08 14:20:45 (GMT) |
---|---|---|
committer | Tom Cooksey <thomas.cooksey@nokia.com> | 2010-04-08 14:34:53 (GMT) |
commit | f1c3756ff7fae9caea84b70dfda139757a0ef98d (patch) | |
tree | 739b06e7c5f2f092ccd694860bf1dcc3c5abf7ff | |
parent | e1671f51dde620a403fdf9a6d71d9a89f8795b96 (diff) | |
download | Qt-f1c3756ff7fae9caea84b70dfda139757a0ef98d.zip Qt-f1c3756ff7fae9caea84b70dfda139757a0ef98d.tar.gz Qt-f1c3756ff7fae9caea84b70dfda139757a0ef98d.tar.bz2 |
e-Ink support cleanup
* make fixupScreenInfo a protected virtual function
* Change is8Track bool to DriverType enum
* Document new functions
Merge-request: 417
Reviewed-by: Tom Cooksey <thomas.cooksey@nokia.com>
-rw-r--r-- | src/gui/embedded/qscreenlinuxfb_qws.cpp | 31 | ||||
-rw-r--r-- | src/gui/embedded/qscreenlinuxfb_qws.h | 3 |
2 files changed, 27 insertions, 7 deletions
diff --git a/src/gui/embedded/qscreenlinuxfb_qws.cpp b/src/gui/embedded/qscreenlinuxfb_qws.cpp index 4c91416..16ea4dd 100644 --- a/src/gui/embedded/qscreenlinuxfb_qws.cpp +++ b/src/gui/embedded/qscreenlinuxfb_qws.cpp @@ -91,7 +91,7 @@ public: int startuph; int startupd; bool blank; - bool is8Track; + QLinuxFbScreen::DriverTypes driverType; bool doGraphicsMode; #ifdef QT_QWS_DEPTH_GENERIC @@ -165,7 +165,24 @@ void QLinuxFbScreenPrivate::closeTty() ttyfd = -1; } -static void fixupScreenInfo(fb_fix_screeninfo &finfo, fb_var_screeninfo &vinfo) +/*! + \enum QLinuxFbScreen::DriverTypes + + This enum describes the driver type. + + \value GenericDriver Generic Linux framebuffer driver + \value EInk8Track e-Ink framebuffer driver using the 8Track chipset + */ + +/*! + \fn QLinuxFbScreen::fixupScreenInfo(fb_fix_screeninfo &finfo, fb_var_screeninfo &vinfo) + + Adjust the values returned by the framebuffer driver, to work + around driver bugs or nonstandard behavior in certain drivers. + \a finfo and \a vinfo specify the fixed and variable screen info + returned by the driver. + */ +void QLinuxFbScreen::fixupScreenInfo(fb_fix_screeninfo &finfo, fb_var_screeninfo &vinfo) { // 8Track e-ink devices (as found in Sony PRS-505) lie // about their bit depth -- they claim they're 1 bit per @@ -320,7 +337,7 @@ bool QLinuxFbScreen::connect(const QString &displaySpec) return false; } - d_ptr->is8Track = !strcmp(finfo.id, "8TRACKFB"); + d_ptr->driverType = strcmp(finfo.id, "8TRACKFB") ? GenericDriver : EInk8Track; if (finfo.type == FB_TYPE_VGA_PLANES) { qWarning("VGA16 video mode not supported"); @@ -1223,12 +1240,12 @@ int QLinuxFbScreen::sharedRamSize(void * end) */ void QLinuxFbScreen::setDirty(const QRect &r) { - if(d_ptr->is8Track) { + if(d_ptr->driverType == EInk8Track) { // e-Ink displays need a trigger to actually show what is // in their framebuffer memory. The 8-Track driver does this // by adding custom IOCTLs - FBIO_EINK_DISP_PIC (0x46a2) takes - // an argument specifying whether or not to update the Flash - // memory. + // an argument specifying whether or not to flash the screen + // while updating. // There doesn't seem to be a way to tell it to just update // a subset of the screen. if(r.left() == 0 && r.top() == 0 && r.width() == dw && r.height() == dh) @@ -1358,7 +1375,7 @@ bool QLinuxFbScreen::useOffscreen() { // Not done for 8Track because on e-Ink displays, // everything is offscreen anyway - if (d_ptr->is8Track || ((mapsize - size) < 16*1024)) + if (d_ptr->driverType == EInk8Track || ((mapsize - size) < 16*1024)) return false; return true; diff --git a/src/gui/embedded/qscreenlinuxfb_qws.h b/src/gui/embedded/qscreenlinuxfb_qws.h index 0854191..6abadbf 100644 --- a/src/gui/embedded/qscreenlinuxfb_qws.h +++ b/src/gui/embedded/qscreenlinuxfb_qws.h @@ -88,6 +88,8 @@ public: virtual bool useOffscreen(); + enum DriverTypes { GenericDriver, EInk8Track }; + virtual void disconnect(); virtual void shutdownDevice(); virtual void setMode(int,int,int); @@ -110,6 +112,7 @@ protected: int dataoffset; int cacheStart; + virtual void fixupScreenInfo(fb_fix_screeninfo &finfo, fb_var_screeninfo &vinfo); static void clearCache(QScreen *instance, int); private: |