Title: [129387] trunk/Source
Revision
129387
Author
[email protected]
Date
2012-09-24 10:45:12 -0700 (Mon, 24 Sep 2012)

Log Message

[GTK] Implement GraphicsLayer using Clutter
https://bugs.webkit.org/show_bug.cgi?id=73767

Source/WebCore:

Patch by Joone Hur  <[email protected]>, Gustavo Noronha Silva <[email protected]> on 2012-09-24
Reviewed by Martin Robinson.

This patch is needed for enabling Accelerated Compositing(Clutter backend)
with the patches submitted in bug 92045 and 91940.

No new tests. This will be covered by pixel tests for Qt/GTK+ accelerated
compositing and 3D transforms.

* GNUmakefile.list.am:
* platform/clutter/GRefPtrClutter.cpp: Removed.
* platform/clutter/GRefPtrClutter.h: Removed.
* platform/graphics/clutter/PlatformClutterLayerClient.h: Added.
(WebCore):
(PlatformClutterLayerClient):
(WebCore::PlatformClutterLayerClient::~PlatformClutterLayerClient):
* platform/graphics/clutter/TransformationMatrixClutter.cpp: Added to convert CoglMatrix to
TransformationMatrix.
(WebCore):
(WebCore::TransformationMatrix::operator CoglMatrix):
* platform/graphics/transforms/TransformationMatrix.h:
(TransformationMatrix):

Source/WebKit/gtk:

Patch by Joone Hur <[email protected]> on 2012-09-24
Reviewed by Martin Robinson.

This patch is needed for enabling Accelerated Compositing(Clutter backend)
with the patches submitted in bug 92045 and 91940.

* WebCoreSupport/AcceleratedCompositingContextClutter.cpp:
(WebKit::AcceleratedCompositingContext::scrollNonCompositedContents): Added to fix bulid break.
(WebKit):

Source/WebKit2:

Patch by Joone Hur  <[email protected]>, Gustavo Noronha Silva <[email protected]> on 2012-09-24
Reviewed by Martin Robinson.

Fixed link errors by adding Clutter library and header to WebKit2 build.

* GNUmakefile.am:

Source/WTF:

Patch by Joone Hur <[email protected]> on 2012-09-24
Reviewed by Martin Robinson.

Add ClutterActor and GraphicsLayerActor to GTypedefs.h.

* wtf/gobject/GTypedefs.h:

Modified Paths

Added Paths

Removed Paths

Diff

Modified: trunk/Source/WTF/ChangeLog (129386 => 129387)


--- trunk/Source/WTF/ChangeLog	2012-09-24 17:18:37 UTC (rev 129386)
+++ trunk/Source/WTF/ChangeLog	2012-09-24 17:45:12 UTC (rev 129387)
@@ -1,3 +1,14 @@
+2012-09-24  Joone Hur  <[email protected]>
+
+        [GTK] Implement GraphicsLayer using Clutter
+        https://bugs.webkit.org/show_bug.cgi?id=73767
+
+        Reviewed by Martin Robinson.
+
+        Add ClutterActor and GraphicsLayerActor to GTypedefs.h.
+
+        * wtf/gobject/GTypedefs.h:
+
 2012-09-23  Byungwoo Lee  <[email protected]>
 
         Fix build warnings : -Wunused-parameter, -Wparentheses, -Wuninitialized.

Modified: trunk/Source/WTF/wtf/gobject/GTypedefs.h (129386 => 129387)


--- trunk/Source/WTF/wtf/gobject/GTypedefs.h	2012-09-24 17:18:37 UTC (rev 129386)
+++ trunk/Source/WTF/wtf/gobject/GTypedefs.h	2012-09-24 17:45:12 UTC (rev 129387)
@@ -71,6 +71,11 @@
 typedef struct _cairo_rectangle_int cairo_rectangle_int_t;
 #endif
 
+#if USE(CLUTTER)
+typedef struct _ClutterActor ClutterActor;
+typedef struct _GraphicsLayerActor GraphicsLayerActor;
+#endif
+
 #if PLATFORM(GTK)
 typedef struct _GtkAction GtkAction;
 typedef struct _GtkAdjustment GtkAdjustment;

Modified: trunk/Source/WebCore/ChangeLog (129386 => 129387)


--- trunk/Source/WebCore/ChangeLog	2012-09-24 17:18:37 UTC (rev 129386)
+++ trunk/Source/WebCore/ChangeLog	2012-09-24 17:45:12 UTC (rev 129387)
@@ -1,3 +1,30 @@
+2012-09-24  Joone Hur  <[email protected]>, Gustavo Noronha Silva  <[email protected]>
+
+        [GTK] Implement GraphicsLayer using Clutter
+        https://bugs.webkit.org/show_bug.cgi?id=73767
+
+        Reviewed by Martin Robinson.
+        
+        This patch is needed for enabling Accelerated Compositing(Clutter backend) 
+        with the patches submitted in bug 92045 and 91940.
+        
+        No new tests. This will be covered by pixel tests for Qt/GTK+ accelerated
+        compositing and 3D transforms.
+
+        * GNUmakefile.list.am:
+        * platform/clutter/GRefPtrClutter.cpp: Removed.
+        * platform/clutter/GRefPtrClutter.h: Removed.
+        * platform/graphics/clutter/PlatformClutterLayerClient.h: Added.
+        (WebCore):
+        (PlatformClutterLayerClient):
+        (WebCore::PlatformClutterLayerClient::~PlatformClutterLayerClient):
+        * platform/graphics/clutter/TransformationMatrixClutter.cpp: Added to convert CoglMatrix to 
+        TransformationMatrix.
+        (WebCore):
+        (WebCore::TransformationMatrix::operator CoglMatrix):
+        * platform/graphics/transforms/TransformationMatrix.h:
+        (TransformationMatrix):
+
 2012-09-24  David Grogan  <[email protected]>
 
         Unprefix IndexedDB

Modified: trunk/Source/WebCore/GNUmakefile.list.am (129386 => 129387)


--- trunk/Source/WebCore/GNUmakefile.list.am	2012-09-24 17:18:37 UTC (rev 129386)
+++ trunk/Source/WebCore/GNUmakefile.list.am	2012-09-24 17:45:12 UTC (rev 129387)
@@ -6238,10 +6238,9 @@
 if USE_ACCELERATED_COMPOSITING
 if USE_CLUTTER
 webcore_sources += \
-	Source/WebCore/platform/clutter/GRefPtrClutter.cpp \
-	Source/WebCore/platform/clutter/GRefPtrClutter.h \
 	Source/WebCore/platform/graphics/clutter/GraphicsLayerClutter.cpp \
-	Source/WebCore/platform/graphics/clutter/GraphicsLayerClutter.h
+	Source/WebCore/platform/graphics/clutter/GraphicsLayerClutter.h \
+	Source/WebCore/platform/graphics/clutter/TransformationMatrixClutter.cpp
 endif  # END USE_CLUTTER
 
 if USE_TEXTURE_MAPPER_CAIRO

Deleted: trunk/Source/WebCore/platform/clutter/GRefPtrClutter.cpp (129386 => 129387)


--- trunk/Source/WebCore/platform/clutter/GRefPtrClutter.cpp	2012-09-24 17:18:37 UTC (rev 129386)
+++ trunk/Source/WebCore/platform/clutter/GRefPtrClutter.cpp	2012-09-24 17:45:12 UTC (rev 129387)
@@ -1,53 +0,0 @@
-/*
- *  Copyright (C) 2011 Collabora Ltd.
- *
- *  This library is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Lesser General Public
- *  License as published by the Free Software Foundation; either
- *  version 2 of the License, or (at your option) any later version.
- *
- *  This library is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Lesser General Public License for more details.
- *
- *  You should have received a copy of the GNU Lesser General Public
- *  License along with this library; if not, write to the Free Software
- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-
-#include "config.h"
-#include "GRefPtrClutter.h"
-
-#include <clutter/clutter.h>
-
-namespace WTF {
-
-template <> GRefPtr<ClutterActor> adoptGRef(ClutterActor* ptr)
-{
-    if (g_object_is_floating(ptr))
-        g_object_ref_sink(ptr);
-
-    return GRefPtr<ClutterActor>(ptr, GRefPtrAdopt);
-}
-
-template <> ClutterActor* refGPtr<ClutterActor>(ClutterActor* ptr)
-{
-    if (ptr) {
-        if (g_object_is_floating(ptr))
-            g_object_ref_sink(ptr);
-
-        g_object_ref(ptr);
-    }
-
-    return ptr;
-}
-
-template <> void derefGPtr<ClutterActor>(ClutterActor* ptr)
-{
-    if (ptr)
-        g_object_unref(ptr);
-}
-
-}

Deleted: trunk/Source/WebCore/platform/clutter/GRefPtrClutter.h (129386 => 129387)


--- trunk/Source/WebCore/platform/clutter/GRefPtrClutter.h	2012-09-24 17:18:37 UTC (rev 129386)
+++ trunk/Source/WebCore/platform/clutter/GRefPtrClutter.h	2012-09-24 17:45:12 UTC (rev 129387)
@@ -1,34 +0,0 @@
-/*
- *  Copyright (C) 2011 Collabora Ltd.
- *
- *  This library is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Library General Public
- *  License as published by the Free Software Foundation; either
- *  version 2 of the License, or (at your option) any later version.
- *
- *  This library is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Library General Public License for more details.
- *
- *  You should have received a copy of the GNU Library General Public License
- *  along with this library; see the file COPYING.LIB.  If not, write to
- *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- *  Boston, MA 02110-1301, USA.
- */
-
-#ifndef GRefPtrClutter_h
-#define GRefPtrClutter_h
-
-#include <wtf/gobject/GRefPtr.h>
-
-typedef struct _ClutterActor ClutterActor;
-
-namespace WTF {
-
-template<> ClutterActor* refGPtr<ClutterActor>(ClutterActor* ptr);
-template<> void derefGPtr<ClutterActor>(ClutterActor* ptr);
-
-}
-
-#endif

Modified: trunk/Source/WebCore/platform/graphics/clutter/GraphicsLayerClutter.h (129386 => 129387)


--- trunk/Source/WebCore/platform/graphics/clutter/GraphicsLayerClutter.h	2012-09-24 17:18:37 UTC (rev 129386)
+++ trunk/Source/WebCore/platform/graphics/clutter/GraphicsLayerClutter.h	2012-09-24 17:45:12 UTC (rev 129387)
@@ -29,10 +29,10 @@
 
 #if USE(ACCELERATED_COMPOSITING)
 
-#include "GRefPtrClutter.h"
 #include "GraphicsLayer.h"
 
 #include <clutter/clutter.h>
+#include <wtf/gobject/GRefPtr.h>
 
 namespace WebCore {
 

Copied: trunk/Source/WebCore/platform/graphics/clutter/PlatformClutterLayerClient.h (from rev 129386, trunk/Source/WebCore/platform/graphics/clutter/GraphicsLayerClutter.h) (0 => 129387)


--- trunk/Source/WebCore/platform/graphics/clutter/PlatformClutterLayerClient.h	                        (rev 0)
+++ trunk/Source/WebCore/platform/graphics/clutter/PlatformClutterLayerClient.h	2012-09-24 17:45:12 UTC (rev 129387)
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2011 Collabora Ltd.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef PlatformClutterLayerClient_h
+#define PlatformClutterLayerClient_h
+
+#if USE(ACCELERATED_COMPOSITING)
+
+#include "GraphicsContext.h"
+#include "GraphicsLayer.h"
+
+namespace WebCore {
+
+class PlatformClutterLayerClient {
+public:
+    virtual void platformClutterLayerPaintContents(GraphicsContext&, const IntRect& inClip) = 0;
+    virtual void platformClutterLayerAnimationStarted(double startTime) = 0;
+
+protected:
+    virtual ~PlatformClutterLayerClient() { }
+};
+
+}
+
+#endif // USE(ACCELERATED_COMPOSITING)
+
+#endif // PlatformClutterLayerClient_h
+

Added: trunk/Source/WebCore/platform/graphics/clutter/TransformationMatrixClutter.cpp (0 => 129387)


--- trunk/Source/WebCore/platform/graphics/clutter/TransformationMatrixClutter.cpp	                        (rev 0)
+++ trunk/Source/WebCore/platform/graphics/clutter/TransformationMatrixClutter.cpp	2012-09-24 17:45:12 UTC (rev 129387)
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2011 Collabora Ltd.
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free
+ *  Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ *  Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+#include "TransformationMatrix.h"
+
+#include <cogl/cogl.h>
+
+namespace WebCore {
+
+TransformationMatrix::operator CoglMatrix() const
+{
+    CoglMatrix matrix;
+
+    matrix.xx = m11();
+    matrix.xy = m21();
+    matrix.xz = m31();
+    matrix.xw = m41();
+
+    matrix.yx = m12();
+    matrix.yy = m22();
+    matrix.yz = m32();
+    matrix.yw = m42();
+
+    matrix.zx = m13();
+    matrix.zy = m23();
+    matrix.zz = m33();
+    matrix.zw = m43();
+
+    matrix.wx = m14();
+    matrix.wy = m24();
+    matrix.wz = m34();
+    matrix.ww = m44();
+
+    return matrix;
+}
+
+}

Modified: trunk/Source/WebCore/platform/graphics/transforms/TransformationMatrix.h (129386 => 129387)


--- trunk/Source/WebCore/platform/graphics/transforms/TransformationMatrix.h	2012-09-24 17:18:37 UTC (rev 129386)
+++ trunk/Source/WebCore/platform/graphics/transforms/TransformationMatrix.h	2012-09-24 17:45:12 UTC (rev 129387)
@@ -34,6 +34,9 @@
 #if USE(CA)
 typedef struct CATransform3D CATransform3D;
 #endif
+#if USE(CLUTTER)
+typedef struct _CoglMatrix CoglMatrix;
+#endif
 #if USE(CG)
 typedef struct CGAffineTransform CGAffineTransform;
 #elif USE(CAIRO)
@@ -324,6 +327,9 @@
     TransformationMatrix(const CATransform3D&);
     operator CATransform3D() const;
 #endif
+#if USE(CLUTTER)
+    operator CoglMatrix() const;
+#endif
 #if USE(CG)
     TransformationMatrix(const CGAffineTransform&);
     operator CGAffineTransform() const;

Modified: trunk/Source/WebKit/gtk/ChangeLog (129386 => 129387)


--- trunk/Source/WebKit/gtk/ChangeLog	2012-09-24 17:18:37 UTC (rev 129386)
+++ trunk/Source/WebKit/gtk/ChangeLog	2012-09-24 17:45:12 UTC (rev 129387)
@@ -1,3 +1,17 @@
+2012-09-24  Joone Hur  <[email protected]>
+
+        [GTK] Implement GraphicsLayer using Clutter
+        https://bugs.webkit.org/show_bug.cgi?id=73767
+
+        Reviewed by Martin Robinson.
+
+        This patch is needed for enabling Accelerated Compositing(Clutter backend)
+        with the patches submitted in bug 92045 and 91940.
+
+        * WebCoreSupport/AcceleratedCompositingContextClutter.cpp:
+        (WebKit::AcceleratedCompositingContext::scrollNonCompositedContents): Added to fix bulid break.
+        (WebKit):
+
 2012-09-19  Danilo Cesar Lemes de Paula  <[email protected]>
 
         [gtk] add enable-media-stream to websettings

Modified: trunk/Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContextClutter.cpp (129386 => 129387)


--- trunk/Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContextClutter.cpp	2012-09-24 17:18:37 UTC (rev 129386)
+++ trunk/Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContextClutter.cpp	2012-09-24 17:45:12 UTC (rev 129387)
@@ -112,6 +112,11 @@
     gtk_widget_size_allocate(GTK_WIDGET(m_rootLayerEmbedder), &allocation);
 }
 
+void AcceleratedCompositingContext::scrollNonCompositedContents(const IntRect& scrollRect, const IntSize& scrollOffset)
+{
+    notImplemented();
+}
+
 static gboolean flushAndRenderLayersCallback(AcceleratedCompositingContext* context)
 {
     context->flushAndRenderLayers();

Modified: trunk/Source/WebKit2/ChangeLog (129386 => 129387)


--- trunk/Source/WebKit2/ChangeLog	2012-09-24 17:18:37 UTC (rev 129386)
+++ trunk/Source/WebKit2/ChangeLog	2012-09-24 17:45:12 UTC (rev 129387)
@@ -1,3 +1,14 @@
+2012-09-24  Joone Hur  <[email protected]>, Gustavo Noronha Silva  <[email protected]>
+
+        [GTK] Implement GraphicsLayer using Clutter
+        https://bugs.webkit.org/show_bug.cgi?id=73767
+
+        Reviewed by Martin Robinson.
+
+        Fixed link errors by adding Clutter library and header to WebKit2 build.
+
+        * GNUmakefile.am:
+
 2012-09-24  Carlos Garcia Campos  <[email protected]>
 
         [GTK] WebKitWebView:is-loading is not updated when the is loaded is started by link clicked navigation action

Modified: trunk/Source/WebKit2/GNUmakefile.am (129386 => 129387)


--- trunk/Source/WebKit2/GNUmakefile.am	2012-09-24 17:18:37 UTC (rev 129386)
+++ trunk/Source/WebKit2/GNUmakefile.am	2012-09-24 17:45:12 UTC (rev 129387)
@@ -101,6 +101,7 @@
 	$(webcore_cppflags) \
 	$(webcoregtk_cppflags) \
 	$(_javascript_core_cppflags) \
+	$(CLUTTER_CFLAGS) \
 	$(COVERAGE_CFLAGS) \
 	$(GEOCLUE_CFLAGS) \
 	$(GLIB_CFLAGS) \
@@ -162,6 +163,7 @@
 	libjavascriptcoregtk-@WEBKITGTK_API_MAJOR_VERSION@.@[email protected] \
 	libWebCoreGtk.la \
 	$(CAIRO_LIBS) \
+	$(CLUTTER_LIBS) \
 	$(COVERAGE_LDFLAGS) \
 	$(FARSTREAM_LIBS) \
 	$(GAIL_LIBS) \
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to