summaryrefslogtreecommitdiff
path: root/packages/webkit
diff options
context:
space:
mode:
authorFlorian Boor <florian.boor@kernelconcepts.de>2007-11-06 15:16:38 +0000
committerFlorian Boor <florian.boor@kernelconcepts.de>2007-11-06 15:16:38 +0000
commitf0eb3fa507e436d44b943bedfcd8afa5ff760971 (patch)
tree15a57fffc1a01825821f35508fc84ce2a08fd93e /packages/webkit
parent51d30ada0db9ff322925628fe9d965687685f52d (diff)
parentb8a64f32a1bd74900ef43067e40fa1153c5f27cc (diff)
merge of 'c5d7d939915c058ea8efba4e6e2fa2e5f1648626'
and 'd6978786d6310b56cb0f5a93790659cd481ca0d5'
Diffstat (limited to 'packages/webkit')
-rw-r--r--packages/webkit/files/qt-api-changes.diff27
-rw-r--r--packages/webkit/files/qtwebkit-use-image-decoders.patch280
-rw-r--r--packages/webkit/webkit-gtk_svn.bb4
-rw-r--r--packages/webkit/webkit-qt.inc18
-rw-r--r--packages/webkit/webkit-qtopia_svn.bb4
-rw-r--r--packages/webkit/webkit.inc5
6 files changed, 331 insertions, 7 deletions
diff --git a/packages/webkit/files/qt-api-changes.diff b/packages/webkit/files/qt-api-changes.diff
new file mode 100644
index 0000000000..16f448b017
--- /dev/null
+++ b/packages/webkit/files/qt-api-changes.diff
@@ -0,0 +1,27 @@
+Index: WebKit/qt/Api/qwebkitglobal.h
+===================================================================
+--- WebKit/qt/Api/qwebkitglobal.h (revision 26079)
++++ WebKit/qt/Api/qwebkitglobal.h (working copy)
+@@ -25,15 +25,13 @@
+ #include <qglobal.h>
+
+ #if defined(Q_OS_WIN)
+-# if defined(BUILD_WEBKIT)
+-# define QWEBKIT_EXPORT Q_DECL_EXPORT
+-# else
+-# define QWEBKIT_EXPORT Q_DECL_IMPORT
+-# endif
++ #ifdef BUILD_WEBKIT
++ #define QWEBKIT_EXPORT __declspec(dllexport)
++ #else
++ #define QWEBKIT_EXPORT __declspec(dllimport)
++ #endif
++#else
++ #define QWEBKIT_EXPORT __attribute__((visibility("default")))
+ #endif
+
+-#if !defined(QWEBKIT_EXPORT)
+-#define QWEBKIT_EXPORT Q_DECL_EXPORT
+-#endif
+-
+ #endif // QWEBKITGLOBAL_H
diff --git a/packages/webkit/files/qtwebkit-use-image-decoders.patch b/packages/webkit/files/qtwebkit-use-image-decoders.patch
new file mode 100644
index 0000000000..85d3f84a0d
--- /dev/null
+++ b/packages/webkit/files/qtwebkit-use-image-decoders.patch
@@ -0,0 +1,280 @@
+diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro
+index bb34e44..23a1cd0 100644
+--- a/WebCore/WebCore.pro
++++ b/WebCore/WebCore.pro
+@@ -6,6 +6,7 @@ CONFIG += building-libs
+ CONFIG += no_batch
+ include($$PWD/../WebKit.pri)
+ gtk-port:LIBS -= -lWebKitGtk
++qt-port:LIBS += -lpng -ljpeg
+
+ TEMPLATE = lib
+ qt-port:TARGET = QtWebKit
+@@ -74,6 +75,12 @@ qt-port {
+ INCLUDEPATH += \
+ $$PWD/platform/qt \
+ $$PWD/platform/network/qt \
++ $$PWD/platform/image-decoders/bmp \
++ $$PWD/platform/image-decoders/gif \
++ $$PWD/platform/image-decoders/ico \
++ $$PWD/platform/image-decoders/jpeg \
++ $$PWD/platform/image-decoders/png \
++ $$PWD/platform/image-decoders/xbm \
+ $$PWD/platform/graphics/qt \
+ $$PWD/platform/graphics/svg/qt \
+ $$PWD/loader/qt \
+@@ -777,6 +784,13 @@ qt-port {
+ page/qt/EventHandlerQt.cpp \
+ page/qt/FrameQt.cpp \
+ loader/qt/DocumentLoaderQt.cpp \
++ platform/image-decoders/gif/GIFImageDecoder.cpp \
++ platform/image-decoders/gif/GIFImageReader.cpp \
++ platform/image-decoders/png/PNGImageDecoder.cpp \
++ platform/image-decoders/jpeg/JPEGImageDecoder.cpp \
++ platform/image-decoders/bmp/BMPImageDecoder.cpp \
++ platform/image-decoders/ico/ICOImageDecoder.cpp \
++ platform/image-decoders/xbm/XBMImageDecoder.cpp \
+ platform/graphics/qt/AffineTransformQt.cpp \
+ platform/graphics/qt/ColorQt.cpp \
+ platform/graphics/qt/FloatPointQt.cpp \
+diff --git a/WebCore/platform/graphics/ImageSource.h b/WebCore/platform/graphics/ImageSource.h
+index a75f1d6..2af8c1e 100644
+--- a/WebCore/platform/graphics/ImageSource.h
++++ b/WebCore/platform/graphics/ImageSource.h
+@@ -49,8 +49,8 @@ class SharedBuffer;
+ typedef CGImageSourceRef NativeImageSourcePtr;
+ typedef CGImageRef NativeImagePtr;
+ #elif PLATFORM(QT)
+-class ImageDecoderQt;
+-typedef ImageDecoderQt* NativeImageSourcePtr;
++class ImageDecoder;
++typedef ImageDecoder* NativeImageSourcePtr;
+ typedef QPixmap* NativeImagePtr;
+ #else
+ class ImageDecoder;
+diff --git a/WebCore/platform/graphics/qt/ImageSourceQt.cpp b/WebCore/platform/graphics/qt/ImageSourceQt.cpp
+index 264f90f..d1fd340 100644
+--- a/WebCore/platform/graphics/qt/ImageSourceQt.cpp
++++ b/WebCore/platform/graphics/qt/ImageSourceQt.cpp
+@@ -1,6 +1,7 @@
+ /*
+ * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
+ * Copyright (C) 2006 Trolltech ASA
++ * Copyright (C) 2007 Alp Toker <alp.toker@collabora.co.uk>
+ *
+ * All rights reserved.
+ *
+@@ -28,76 +29,78 @@
+
+ #include "config.h"
+ #include "ImageSource.h"
+-#include "ImageDecoderQt.h"
+ #include "SharedBuffer.h"
+
+-#include <QImage>
+-#include <qdebug.h>
++#include "GIFImageDecoder.h"
++#include "JPEGImageDecoder.h"
++#include "PNGImageDecoder.h"
++#include "BMPImageDecoder.h"
++#include "ICOImageDecoder.h"
++#include "XBMImageDecoder.h"
+
++#include <QImage>
++#include <QPixmap>
+
+ namespace WebCore {
+- enum ImageFormat { ImageFormat_None, ImageFormat_GIF, ImageFormat_PNG, ImageFormat_JPEG,
+- ImageFormat_BMP, ImageFormat_ICO, ImageFormat_XBM };
+
+-ImageFormat detectImageFormat(const SharedBuffer& data)
++ImageDecoder* createDecoder(const Vector<char>& data)
+ {
+ // We need at least 4 bytes to figure out what kind of image we're dealing with.
+ int length = data.size();
+ if (length < 4)
+- return ImageFormat_None;
++ return 0;
+
+- const unsigned char* uContents = (const unsigned char*) data.data();
++ const unsigned char* uContents = (const unsigned char*)data.data();
+ const char* contents = data.data();
+
+ // GIFs begin with GIF8(7 or 9).
+ if (strncmp(contents, "GIF8", 4) == 0)
+- return ImageFormat_GIF;
++ return new GIFImageDecoder();
+
+ // Test for PNG.
+- if (uContents[0] == 0x89 &&
+- uContents[1] == 0x50 &&
+- uContents[2] == 0x4E &&
+- uContents[3] == 0x47)
+- return ImageFormat_PNG;
++ if (uContents[0]==0x89 &&
++ uContents[1]==0x50 &&
++ uContents[2]==0x4E &&
++ uContents[3]==0x47)
++ return new PNGImageDecoder();
+
+ // JPEG
+- if (uContents[0] == 0xFF &&
+- uContents[1] == 0xD8 &&
+- uContents[2] == 0xFF)
+- return ImageFormat_JPEG;
++ if (uContents[0]==0xFF &&
++ uContents[1]==0xD8 &&
++ uContents[2]==0xFF)
++ return new JPEGImageDecoder();
+
+ // BMP
+ if (strncmp(contents, "BM", 2) == 0)
+- return ImageFormat_BMP;
++ return new BMPImageDecoder();
+
+ // ICOs always begin with a 2-byte 0 followed by a 2-byte 1.
+ // CURs begin with 2-byte 0 followed by 2-byte 2.
+ if (!memcmp(contents, "\000\000\001\000", 4) ||
+ !memcmp(contents, "\000\000\002\000", 4))
+- return ImageFormat_ICO;
+-
++ return new ICOImageDecoder();
++
+ // XBMs require 8 bytes of info.
+ if (length >= 8 && strncmp(contents, "#define ", 8) == 0)
+- return ImageFormat_XBM;
++ return new XBMImageDecoder();
+
+ // Give up. We don't know what the heck this is.
+- return ImageFormat_None;
+-}
+-
+-ImageDecoderQt* createDecoder(const SharedBuffer& data) {
+- if (detectImageFormat(data) != ImageFormat_None)
+- return new ImageDecoderQt();
+ return 0;
+ }
+
+ ImageSource::ImageSource()
+- : m_decoder(0)
++ : m_decoder(0)
++{}
++
++ImageSource::~ImageSource()
+ {
++ clear();
+ }
+
+-ImageSource::~ImageSource()
++void ImageSource::clear()
+ {
+ delete m_decoder;
++ m_decoder = 0;
+ }
+
+ bool ImageSource::initialized() const
+@@ -111,13 +114,11 @@ void ImageSource::setData(SharedBuffer* data, bool allDataReceived)
+ // This method will examine the data and instantiate an instance of the appropriate decoder plugin.
+ // If insufficient bytes are available to determine the image type, no decoder plugin will be
+ // made.
+- if (!m_decoder)
+- m_decoder = createDecoder(*data);
+-
++ delete m_decoder;
++ m_decoder = createDecoder(data->buffer());
+ if (!m_decoder)
+ return;
+-
+- m_decoder->setData(data->buffer(), allDataReceived);
++ m_decoder->setData(data, allDataReceived);
+ }
+
+ bool ImageSource::isSizeAvailable()
+@@ -146,10 +147,7 @@ int ImageSource::repetitionCount()
+
+ size_t ImageSource::frameCount() const
+ {
+- if (!m_decoder)
+- return 0;
+-
+- return m_decoder->frameCount();
++ return m_decoder ? m_decoder->frameCount() : 0;
+ }
+
+ NativeImagePtr ImageSource::createFrameAtIndex(size_t index)
+@@ -157,25 +155,38 @@ NativeImagePtr ImageSource::createFrameAtIndex(size_t index)
+ if (!m_decoder)
+ return 0;
+
+-
+- const QPixmap* source = m_decoder->imageAtIndex(index);
+- if (!source)
++ RGBA32Buffer* buffer = m_decoder->frameBufferAtIndex(index);
++ if (!buffer || buffer->status() == RGBA32Buffer::FrameEmpty)
+ return 0;
+
+- return new QPixmap(*source);
++ return new QPixmap(QPixmap::fromImage(QImage(reinterpret_cast<unsigned char*>(buffer->bytes().data()),
++ size().width(), size().height(), size().width()*4, QImage::Format_ARGB32)));
++}
++
++bool ImageSource::frameIsCompleteAtIndex(size_t index)
++{
++ if (!m_decoder)
++ return false;
++
++ RGBA32Buffer* buffer = m_decoder->frameBufferAtIndex(index);
++ return buffer && buffer->status() == RGBA32Buffer::FrameComplete;
+ }
+
+ float ImageSource::frameDurationAtIndex(size_t index)
+ {
+ if (!m_decoder)
+ return 0;
+-
++
++ RGBA32Buffer* buffer = m_decoder->frameBufferAtIndex(index);
++ if (!buffer || buffer->status() == RGBA32Buffer::FrameEmpty)
++ return 0;
++
+ // Many annoying ads specify a 0 duration to make an image flash as quickly
+ // as possible. We follow WinIE's behavior and use a duration of 100 ms
+ // for any frames that specify a duration of <= 50 ms. See
+ // <http://bugs.webkit.org/show_bug.cgi?id=14413> or Radar 4051389 for
+ // more.
+- const float duration = m_decoder->duration(index) / 1000.0f;
++ const float duration = buffer->duration() / 1000.0f;
+ return (duration < 0.051f) ? 0.100f : duration;
+ }
+
+@@ -183,26 +194,13 @@ bool ImageSource::frameHasAlphaAtIndex(size_t index)
+ {
+ if (!m_decoder || !m_decoder->supportsAlpha())
+ return false;
+-
+- const QPixmap* source = m_decoder->imageAtIndex( index);
+- if (!source)
+- return false;
+-
+- return source->hasAlphaChannel();
+-}
+
+-bool ImageSource::frameIsCompleteAtIndex(size_t index)
+-{
+- return (m_decoder && m_decoder->imageAtIndex(index) != 0);
+-}
++ RGBA32Buffer* buffer = m_decoder->frameBufferAtIndex(index);
++ if (!buffer || buffer->status() == RGBA32Buffer::FrameEmpty)
++ return false;
+
+-void ImageSource::clear()
+-{
+- delete m_decoder;
+- m_decoder = 0;
++ return buffer->hasAlpha();
+ }
+-
+-
+ }
+
+ // vim: ts=4 sw=4 et
diff --git a/packages/webkit/webkit-gtk_svn.bb b/packages/webkit/webkit-gtk_svn.bb
index 4722999949..262c6820db 100644
--- a/packages/webkit/webkit-gtk_svn.bb
+++ b/packages/webkit/webkit-gtk_svn.bb
@@ -1,14 +1,16 @@
DEPENDS = "curl icu libxml2 cairo libxslt libidn gnutls gtk+"
+
WEBKIT_PORT = "gtk-port"
WEBKIT_EXTRA_OPTIONS = "CONFIG-=qt"
-PACKAGES =+ "webkit-gtklauncher-dbg webkit-gtklauncher"
FILES_webkit-gtklauncher = "${bindir}/GtkLauncher"
FILES_webkit-gtklauncher-dbg = "${bindir}/.debug/GtkLauncher"
require webkit.inc
+PR = "r3"
+
do_install() {
install -d ${D}${bindir}
install -d ${D}${libdir}
diff --git a/packages/webkit/webkit-qt.inc b/packages/webkit/webkit-qt.inc
index bba8d83cce..1dbf71c010 100644
--- a/packages/webkit/webkit-qt.inc
+++ b/packages/webkit/webkit-qt.inc
@@ -1,12 +1,17 @@
WEBKIT_PORT = "qt"
WEBKIT_EXTRA_OPTIONS = ""
-PACKAGES =+ "webkit-qtlauncher-dbg webkit-qtlauncher"
-FILES_webkit-qtlauncher = "${bindir}/QtLauncher"
-FILES_webkit-qtlauncher-dbg = "${bindir}/.debug/*"
+FILES_${PN}launcher = "${bindir}/QtLauncher"
+FILES_${PN}launcher-dbg = "${bindir}/.debug/*"
+
+RDEPENDS += "openssl"
require webkit.inc
+PR = "r6"
+SRC_URI += " file://qt-api-changes.diff;patch=0;pnum=0 \
+ file://qtwebkit-use-image-decoders.patch;patch=0 "
+
do_install() {
install -d ${D}${bindir}
install -d ${D}${libdir}
@@ -16,5 +21,12 @@ do_install() {
cd ${S}/WebKitBuilds/Debug
PWD=`pwd` ${WEBKIT_QMAKE} WEBKIT_INC_DIR=${D}${prefix}/include WEBKIT_LIB_DIR=${D}${libdir} $PWD/../../WebKit.pro
oe_runmake install
+
+ oe_libinstall -C ${S}/WebKitBuilds/Debug/lib libQtWebKit ${D}${libdir}
}
+# disabled as Qt and Qtopia will not like each other...
+#do_stage_prepend() {
+# oe_libinstall -C ${S}/WebKitBuilds/Debug/lib libQtWebKit ${D}${libdir}
+#}
+
diff --git a/packages/webkit/webkit-qtopia_svn.bb b/packages/webkit/webkit-qtopia_svn.bb
index cfd96c8956..03e1114b81 100644
--- a/packages/webkit/webkit-qtopia_svn.bb
+++ b/packages/webkit/webkit-qtopia_svn.bb
@@ -1,3 +1,5 @@
-BROKEN="1"
require webkit-qt.inc
inherit qtopia4core
+
+WEBKIT_EXTRA_OPTIONS += "QT+=xml QT+=network"
+
diff --git a/packages/webkit/webkit.inc b/packages/webkit/webkit.inc
index c20fc57c93..2ff61091c3 100644
--- a/packages/webkit/webkit.inc
+++ b/packages/webkit/webkit.inc
@@ -1,9 +1,10 @@
DEPENDS += "flex-native gperf-native perl-native sqlite3"
SRCREV_FORMAT = "webcore-rwebkit"
+PACKAGES =+ "${PN}launcher-dbg ${PN}launcher"
+
# Yes, this is wrong...
-PV = "0.0+svnr${SRCREV}"
-PR = "r1"
+PV = "0.1+svnr${SRCREV}"
inherit qmake2 pkgconfig