Changeset 175669 in webkit


Ignore:
Timestamp:
Nov 5, 2014 9:35:02 PM (9 years ago)
Author:
ryuan.choi@gmail.com
Message:

[EFL] Improve previous temporary fix against drawing (0,0) position before rendering content of next web page
https://bugs.webkit.org/show_bug.cgi?id=138305

Reviewed by Gyuyoung Kim.

WebKit2 has freezed layer tree until frame load completion since r101838.
In EFL port, we unfreeze it when PageViewportController::pageTransitionViewportReady() is called though,
UIProcess on EFL port updates cairo surface during the freezing time of layer tree.
Thus UIProcess should not update the layer trees until the layerTreeState is unfrozen.

  • UIProcess/API/efl/EwkView.h: Removed previous workarounds.

(EwkView::setWaitingForNewPage): Deleted.
(EwkView::waitingForNewPage): Deleted.
(EwkView::didCommitNewPage): Deleted.

  • UIProcess/CoordinatedGraphics/PageViewportController.cpp:

(WebKit::PageViewportController::PageViewportController):
(WebKit::PageViewportController::didCommitLoad):
(WebKit::PageViewportController::didRenderFrame):
(WebKit::PageViewportController::syncVisibleContents):

  • UIProcess/CoordinatedGraphics/PageViewportController.h:
  • UIProcess/efl/PageLoadClientEfl.cpp:

(WebKit::PageLoadClientEfl::didCommitLoadForFrame):

  • UIProcess/efl/PageViewportControllerClientEfl.cpp:

(WebKit::PageViewportControllerClientEfl::didChangeVisibleContents):

  • UIProcess/efl/ViewClientEfl.cpp:

(WebKit::ViewClientEfl::didRenderFrame):

Location:
trunk/Source/WebKit2
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r175649 r175669  
     12014-11-05  Ryuan Choi  <ryuan.choi@gmail.com>
     2
     3        [EFL] Improve previous temporary fix against drawing (0,0) position before rendering content of next web page
     4        https://bugs.webkit.org/show_bug.cgi?id=138305
     5
     6        Reviewed by Gyuyoung Kim.
     7
     8        WebKit2 has freezed layer tree until frame load completion since r101838.
     9        In EFL port, we unfreeze it when PageViewportController::pageTransitionViewportReady() is called though,
     10        UIProcess on EFL port updates cairo surface during the freezing time of layer tree.
     11        Thus UIProcess should not update the layer trees until the layerTreeState is unfrozen.
     12
     13        * UIProcess/API/efl/EwkView.h: Removed previous workarounds.
     14        (EwkView::setWaitingForNewPage): Deleted.
     15        (EwkView::waitingForNewPage): Deleted.
     16        (EwkView::didCommitNewPage): Deleted.
     17        * UIProcess/CoordinatedGraphics/PageViewportController.cpp:
     18        (WebKit::PageViewportController::PageViewportController):
     19        (WebKit::PageViewportController::didCommitLoad):
     20        (WebKit::PageViewportController::didRenderFrame):
     21        (WebKit::PageViewportController::syncVisibleContents):
     22        * UIProcess/CoordinatedGraphics/PageViewportController.h:
     23        * UIProcess/efl/PageLoadClientEfl.cpp:
     24        (WebKit::PageLoadClientEfl::didCommitLoadForFrame):
     25        * UIProcess/efl/PageViewportControllerClientEfl.cpp:
     26        (WebKit::PageViewportControllerClientEfl::didChangeVisibleContents):
     27        * UIProcess/efl/ViewClientEfl.cpp:
     28        (WebKit::ViewClientEfl::didRenderFrame):
     29
    1302014-11-05  Timothy Horton  <timothy_horton@apple.com>
    231
  • trunk/Source/WebKit2/UIProcess/API/efl/EwkView.h

    r175468 r175669  
    200200    void didFindZoomableArea(const WKPoint&, const WKRect&);
    201201
    202     // FIXME: PageViewportController needs to fix a problem that current page is shown in (0,0) position when starting to load new page.
    203     // Below functions are to fix this problem for now.
    204     void setWaitingForNewPage() { m_isWaitingForNewPage = true; }
    205     bool waitingForNewPage() { return m_isWaitingForNewPage; }
    206     void didCommitNewPage() { m_isWaitingForNewPage = false; }
    207 
    208202    static const char smartClassName[];
    209203
  • trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/PageViewportController.cpp

    r175468 r175669  
    4949    , m_pendingPositionChange(false)
    5050    , m_pendingScaleChange(false)
     51    , m_layerTreeStateIsFrozen(false)
    5152{
    5253    // Initializing Viewport Raw Attributes to avoid random negative or infinity scale factors
     
    139140    // Do not continue to use the content size of the previous page.
    140141    m_contentsSize = IntSize();
     142
     143    m_layerTreeStateIsFrozen = true;
    141144
    142145    // Reset the position to the top, page/history scroll requests may override this before we re-enable rendering.
     
    202205        m_pendingPositionChange = false;
    203206    }
     207
     208    m_layerTreeStateIsFrozen = false;
    204209}
    205210
     
    266271    drawingArea->setVisibleContentsRect(visibleContentsRect, trajectoryVector);
    267272
    268     m_client.didChangeVisibleContents();
     273    if (!m_layerTreeStateIsFrozen)
     274        m_client.didChangeVisibleContents();
    269275}
    270276
  • trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/PageViewportController.h

    r175468 r175669  
    105105    bool m_pendingPositionChange;
    106106    bool m_pendingScaleChange;
     107    bool m_layerTreeStateIsFrozen;
    107108    WebCore::FloatRect m_lastFrameCoveredRect;
    108109};
  • trunk/Source/WebKit2/UIProcess/efl/PageLoadClientEfl.cpp

    r170243 r175669  
    122122    else
    123123        view->scheduleUpdateDisplay();
    124 
    125     view->setWaitingForNewPage();
    126124}
    127125
  • trunk/Source/WebKit2/UIProcess/efl/PageViewportControllerClientEfl.cpp

    r175468 r175669  
    5858void PageViewportControllerClientEfl::didChangeVisibleContents()
    5959{
    60     if (m_view->waitingForNewPage())
    61         return;
    62 
    6360    m_view->scheduleUpdateDisplay();
    6461}
  • trunk/Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp

    r172445 r175669  
    115115    else
    116116        ewkView->scheduleUpdateDisplay();
    117 
    118     ewkView->didCommitNewPage();
    119117}
    120118
Note: See TracChangeset for help on using the changeset viewer.