summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2011-02-08 18:42:53 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2011-02-08 18:42:53 (GMT)
commit8fc05466a50bcf255900849d787790abd2bf6957 (patch)
tree41e4544008c194354dc925388e2826984df262f0 /src/plugins
parentca4213b45f5f65ebbc7e5143a2940f87c5ca28fa (diff)
parenta6ccb1a72173cec6381d519a720dc08cfdc03720 (diff)
downloadQt-8fc05466a50bcf255900849d787790abd2bf6957.zip
Qt-8fc05466a50bcf255900849d787790abd2bf6957.tar.gz
Qt-8fc05466a50bcf255900849d787790abd2bf6957.tar.bz2
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1: (21 commits) Fix compilation of QMutableSetIterator::value() with QT_STRICT_ITERATORS Fix the compilation error that the previous fix didn't fix Use the thread-default glib context for the DBus connection in the ICD bearer manager. Check that _POSIX_THREAD_SAFE_FUNCTIONS is larger than zero. Use an increasing size for the getpwuid_r buffer. Make sure we use at least 1024 bytes when calling getpwuid_r. Fix compilation error: symbol is namespaced. Don't crash when creating backtrace for built-in JS function (2nd try) Revert "Improved performance of mapFromGlobal/mapToGlobal on X11" QtDBus: do not wait for reply for AddMatch and RemoveMatch Make qdbus show all types, even those that it doesn't know about Doc: Fix the docs saying what the locale codec is used for Autotest: simple improvements Autotest: Use QElapsedTimer for timings directfb: Pixmap creation always premultiplied the alpha even when it is already premultiplied in the image. Don't crash when BMP color table is broken Designer: Fix a crash in the Signal-Slot-Editor. complain about unmatched quotes/parens use const ref move multiple inclusion check for feature files to correct location ...
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/bearer/icd/dbusdispatcher.cpp2
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp22
2 files changed, 5 insertions, 19 deletions
diff --git a/src/plugins/bearer/icd/dbusdispatcher.cpp b/src/plugins/bearer/icd/dbusdispatcher.cpp
index 5f9be74..13cd8a9 100644
--- a/src/plugins/bearer/icd/dbusdispatcher.cpp
+++ b/src/plugins/bearer/icd/dbusdispatcher.cpp
@@ -468,7 +468,7 @@ void DBusDispatcher::setupDBus()
d_ptr->signal_vtable.message_function = signalHandler;
dbus_connection_set_exit_on_disconnect(d_ptr->connection, FALSE);
- dbus_connection_setup_with_g_main(d_ptr->connection, NULL);
+ dbus_connection_setup_with_g_main(d_ptr->connection, g_main_context_get_thread_default());
dbus_connection_register_object_path(d_ptr->connection,
d_ptr->signalPath.toLatin1(),
&d_ptr->signal_vtable,
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
index 6639983..50e0f5f 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
@@ -300,40 +300,26 @@ void QDirectFBPixmapData::fromImage(const QImage &img, Qt::ImageConversionFlags
{
alpha = QDirectFBPixmapData::hasAlphaChannel(img, flags);
imageFormat = alpha ? screen->alphaPixmapFormat() : screen->pixelFormat();
+
QImage image;
if ((flags & ~Qt::NoOpaqueDetection) != Qt::AutoColor) {
image = img.convertToFormat(imageFormat, flags);
flags = Qt::AutoColor;
} else if (img.format() == QImage::Format_RGB32 || img.depth() == 1) {
image = img.convertToFormat(imageFormat, flags);
+ } else if (img.format() != imageFormat) {
+ image = img.convertToFormat(imageFormat, flags);
} else {
image = img;
}
- IDirectFBSurface *imageSurface = screen->createDFBSurface(image, image.format(), QDirectFBScreen::DontTrackSurface);
- if (!imageSurface) {
- qWarning("QDirectFBPixmapData::fromImage()");
- invalidate();
- return;
- }
-
- dfbSurface = screen->createDFBSurface(image.size(), imageFormat, QDirectFBScreen::TrackSurface);
+ dfbSurface = screen->createDFBSurface(image, image.format(), QDirectFBScreen::NoPreallocated | QDirectFBScreen::TrackSurface);
if (!dfbSurface) {
qWarning("QDirectFBPixmapData::fromImage()");
invalidate();
return;
}
- if (image.hasAlphaChannel()) {
- dfbSurface->Clear(dfbSurface, 0, 0, 0, 0);
- dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_BLEND_ALPHACHANNEL);
- } else {
- dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX);
- }
-
- dfbSurface->Blit(dfbSurface, imageSurface, 0, 0, 0);
- imageSurface->Release(imageSurface);
-
w = image.width();
h = image.height();
is_null = (w <= 0 || h <= 0);