Changeset 87805 in webkit


Ignore:
Timestamp:
Jun 1, 2011 8:12:16 AM (13 years ago)
Author:
Adam Roben
Message:

Move WebView's window geometry updating code to a new class

This will allow us to share this code with LayerTreeHostCAWin.

Prep work for <http://webkit.org/b/58054> <rdar://problem/9249839> REGRESSION (WebKit2):
Accelerated CSS animations have a lower framerate than in WebKit1

Reviewed by Anders Carlsson.

  • Shared/win/CoalescedWindowGeometriesUpdater.cpp: Added.

(WebKit::CoalescedWindowGeometriesUpdater::CoalescedWindowGeometriesUpdater):
(WebKit::CoalescedWindowGeometriesUpdater::~CoalescedWindowGeometriesUpdater):
Simple constructor/destructor.

(WebKit::CoalescedWindowGeometriesUpdater::addPendingUpdate):
(WebKit::setWindowRegion):
(WebKit::CoalescedWindowGeometriesUpdater::updateGeometries):

  • Shared/win/CoalescedWindowGeometriesUpdater.h: Added.

Moved code here...

  • UIProcess/win/WebView.cpp:

(WebKit::WebView::scheduleChildWindowGeometryUpdate):
(WebKit::WebView::updateChildWindowGeometries):

  • UIProcess/win/WebView.h:

...from here.

  • win/WebKit2.vcproj: Added new files.
Location:
trunk/Source/WebKit2
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r87804 r87805  
     12011-06-01  Adam Roben  <aroben@apple.com>
     2
     3        Move WebView's window geometry updating code to a new class
     4
     5        This will allow us to share this code with LayerTreeHostCAWin.
     6
     7        Prep work for <http://webkit.org/b/58054> <rdar://problem/9249839> REGRESSION (WebKit2):
     8        Accelerated CSS animations have a lower framerate than in WebKit1
     9
     10        Reviewed by Anders Carlsson.
     11
     12        * Shared/win/CoalescedWindowGeometriesUpdater.cpp: Added.
     13        (WebKit::CoalescedWindowGeometriesUpdater::CoalescedWindowGeometriesUpdater):
     14        (WebKit::CoalescedWindowGeometriesUpdater::~CoalescedWindowGeometriesUpdater):
     15        Simple constructor/destructor.
     16
     17        (WebKit::CoalescedWindowGeometriesUpdater::addPendingUpdate):
     18        (WebKit::setWindowRegion):
     19        (WebKit::CoalescedWindowGeometriesUpdater::updateGeometries):
     20        * Shared/win/CoalescedWindowGeometriesUpdater.h: Added.
     21        Moved code here...
     22
     23        * UIProcess/win/WebView.cpp:
     24        (WebKit::WebView::scheduleChildWindowGeometryUpdate):
     25        (WebKit::WebView::updateChildWindowGeometries):
     26        * UIProcess/win/WebView.h:
     27        ...from here.
     28
     29        * win/WebKit2.vcproj: Added new files.
     30
    1312011-06-01  Adam Roben  <aroben@apple.com>
    232
  • trunk/Source/WebKit2/UIProcess/win/WebView.cpp

    r86990 r87805  
    4242#include "WebPageProxy.h"
    4343#include "WebPopupMenuProxyWin.h"
    44 #include "WindowGeometry.h"
    4544#include <Commctrl.h>
    4645#include <WebCore/BitmapInfo.h>
     
    15321531void WebView::scheduleChildWindowGeometryUpdate(const WindowGeometry& geometry)
    15331532{
    1534     m_childWindowGeometriesToUpdate.set(geometry.window, geometry);
    1535 }
    1536 
    1537 static void setWindowRegion(HWND window, PassOwnPtr<HRGN> popRegion)
    1538 {
    1539     OwnPtr<HRGN> region = popRegion;
    1540 
    1541     if (!::SetWindowRgn(window, region.get(), TRUE))
    1542         return;
    1543 
    1544     // Windows owns the region now.
    1545     region.leakPtr();
     1533    m_geometriesUpdater.addPendingUpdate(geometry);
    15461534}
    15471535
    15481536void WebView::updateChildWindowGeometries()
    15491537{
    1550     HashMap<HWND, WindowGeometry> geometriesToUpdate;
    1551     geometriesToUpdate.swap(m_childWindowGeometriesToUpdate);
    1552 
    1553     HDWP deferWindowPos = ::BeginDeferWindowPos(geometriesToUpdate.size());
    1554 
    1555     for (HashMap<HWND, WindowGeometry>::const_iterator::Values it = geometriesToUpdate.begin().values(), end = geometriesToUpdate.end().values(); it != end; ++it) {
    1556         const WindowGeometry& geometry = *it;
    1557 
    1558         if (!::IsWindow(geometry.window))
    1559             continue;
    1560 
    1561         UINT flags = SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOZORDER;
    1562         if (geometry.visible)
    1563             flags |= SWP_SHOWWINDOW;
    1564         else
    1565             flags |= SWP_HIDEWINDOW;
    1566 
    1567         deferWindowPos = ::DeferWindowPos(deferWindowPos, geometry.window, 0, geometry.frame.x(), geometry.frame.y(), geometry.frame.width(), geometry.frame.height(), flags);
    1568 
    1569         setWindowRegion(geometry.window, adoptPtr(::CreateRectRgn(geometry.clipRect.x(), geometry.clipRect.y(), geometry.clipRect.maxX(), geometry.clipRect.maxY())));
    1570     }
    1571 
    1572     ::EndDeferWindowPos(deferWindowPos);
     1538    m_geometriesUpdater.updateGeometries();
    15731539}
    15741540
  • trunk/Source/WebKit2/UIProcess/win/WebView.h

    r86956 r87805  
    2828
    2929#include "APIObject.h"
     30#include "CoalescedWindowGeometriesUpdater.h"
    3031#include "PageClient.h"
    3132#include "WKView.h"
     
    275276    bool m_gestureReachedScrollingLimit;
    276277
    277     HashMap<HWND, WindowGeometry> m_childWindowGeometriesToUpdate;
     278    CoalescedWindowGeometriesUpdater m_geometriesUpdater;
    278279
    279280#if ENABLE(FULLSCREEN_API)
  • trunk/Source/WebKit2/win/WebKit2.vcproj

    r86990 r87805  
    11711171                                >
    11721172                                <File
     1173                                        RelativePath="..\Shared\win\CoalescedWindowGeometriesUpdater.cpp"
     1174                                        >
     1175                                </File>
     1176                                <File
     1177                                        RelativePath="..\Shared\win\CoalescedWindowGeometriesUpdater.h"
     1178                                        >
     1179                                </File>
     1180                                <File
    11731181                                        RelativePath="..\Shared\win\CommandLineWin.cpp"
    11741182                                        >
Note: See TracChangeset for help on using the changeset viewer.