|
|
|
@ -44,6 +44,11 @@
|
|
|
|
|
#include "qpainter.h"
|
|
|
|
|
#include "qcleanuphandler.h"
|
|
|
|
|
|
|
|
|
|
// Modern systems (year 2011) have very large screens in excess of 1000 pixels wide
|
|
|
|
|
// Some may even have screens in excess of 4000 pixels wide(!)
|
|
|
|
|
// Prevent drawing artifacts on such screens
|
|
|
|
|
#define USE_HUGE_QT_SHARED_DOUBLE_BUFFERS 1
|
|
|
|
|
|
|
|
|
|
static QPixmap* qdb_shared_pixmap = 0;
|
|
|
|
|
static QPixmap *qdb_force_pixmap = 0;
|
|
|
|
|
static QSharedDoubleBuffer* qdb_owner = 0;
|
|
|
|
@ -74,10 +79,16 @@ static const int hardLimitHeight = -1;
|
|
|
|
|
static const int sharedLimitWidth = 64;
|
|
|
|
|
static const int sharedLimitHeight = 20;
|
|
|
|
|
#else
|
|
|
|
|
#ifdef USE_HUGE_QT_SHARED_DOUBLE_BUFFERS
|
|
|
|
|
// 24M on 32bpp
|
|
|
|
|
static const int sharedLimitWidth = 6400;
|
|
|
|
|
static const int sharedLimitHeight = 1000;
|
|
|
|
|
#else
|
|
|
|
|
// 240K on 32bpp
|
|
|
|
|
static const int sharedLimitWidth = 640;
|
|
|
|
|
static const int sharedLimitHeight = 100;
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// *******************************************************************
|
|
|
|
|
// QSharedDoubleBufferCleaner declaration and implementation
|
|
|
|
@ -527,8 +538,13 @@ QPixmap *QSharedDoubleBuffer::getPixmap()
|
|
|
|
|
|
|
|
|
|
if ( rw >= sharedLimitWidth || rh >= sharedLimitHeight ) {
|
|
|
|
|
if ( flags & Force ) {
|
|
|
|
|
#ifdef USE_HUGE_QT_SHARED_DOUBLE_BUFFERS
|
|
|
|
|
rw = QMIN(rw, 16000);
|
|
|
|
|
rh = QMIN(rh, 16000);
|
|
|
|
|
#else
|
|
|
|
|
rw = QMIN(rw, 8000);
|
|
|
|
|
rh = QMIN(rh, 8000);
|
|
|
|
|
#endif
|
|
|
|
|
// need to create a big pixmap and start the cleaner
|
|
|
|
|
if ( ! qdb_force_pixmap ) {
|
|
|
|
|
qdb_force_pixmap = new QPixmap( rw, rh );
|
|
|
|
|