static Eina_Bool _ewk_view_tiled_smart_scrolls_process(Ewk_View_Smart_Data* smartData) { const WTF::Vector<WebCore::IntSize>& scrollOffset = ewk_view_scroll_offsets_get(smartData->_priv); for (size_t i = 0; i < scrollOffset.size(); ++i) ewk_tiled_backing_store_scroll_full_offset_add(smartData->backing_store, scrollOffset[i].width(), scrollOffset[i].height()); return true; }
static Eina_Bool _ewk_view_tiled_smart_scrolls_process(Ewk_View_Smart_Data* smartData) { const Ewk_Scroll_Request* scrollRequest; const Ewk_Scroll_Request* endOfScrollRequest; size_t count; Evas_Coord contentsWidth, contentsHeight; ewk_frame_contents_size_get(smartData->main_frame, &contentsWidth, &contentsHeight); scrollRequest = ewk_view_scroll_requests_get(smartData->_priv, &count); endOfScrollRequest = scrollRequest + count; for (; scrollRequest < endOfScrollRequest; scrollRequest++) { if (scrollRequest->main_scroll) ewk_tiled_backing_store_scroll_full_offset_add (smartData->backing_store, scrollRequest->dx, scrollRequest->dy); else { Evas_Coord scrollX, scrollY, scrollWidth, scrollHeight; scrollX = scrollRequest->x; scrollY = scrollRequest->y; scrollWidth = scrollRequest->w; scrollHeight = scrollRequest->h; if (abs(scrollRequest->dx) >= scrollWidth || abs(scrollRequest->dy) >= scrollHeight) { /* doubt webkit would be so stupid... */ DBG("full page scroll %+03d,%+03d. convert to repaint %d,%d + %dx%d", scrollRequest->dx, scrollRequest->dy, scrollX, scrollY, scrollWidth, scrollHeight); ewk_view_repaint_add(smartData->_priv, scrollX, scrollY, scrollWidth, scrollHeight); continue; } if (scrollX + scrollWidth > contentsWidth) scrollWidth = contentsWidth - scrollX; if (scrollY + scrollHeight > contentsHeight) scrollHeight = contentsHeight - scrollY; if (scrollWidth < 0) scrollWidth = 0; if (scrollHeight < 0) scrollHeight = 0; if (!scrollWidth || !scrollHeight) continue; scrollX -= abs(scrollRequest->dx); scrollY -= abs(scrollRequest->dy); scrollWidth += abs(scrollRequest->dx); scrollHeight += abs(scrollRequest->dy); ewk_view_repaint_add(smartData->_priv, scrollX, scrollY, scrollWidth, scrollHeight); INF("using repaint for inner frame scolling!"); } } return true; }
static Eina_Bool _ewk_view_tiled_smart_scrolls_process(Ewk_View_Smart_Data *sd) { const Ewk_Scroll_Request *sr; const Ewk_Scroll_Request *sr_end; size_t count; Evas_Coord vw, vh; ewk_frame_contents_size_get(sd->main_frame, &vw, &vh); sr = ewk_view_scroll_requests_get(sd->_priv, &count); sr_end = sr + count; for (; sr < sr_end; sr++) { if (sr->main_scroll) ewk_tiled_backing_store_scroll_full_offset_add (sd->backing_store, sr->dx, sr->dy); else { Evas_Coord sx, sy, sw, sh; sx = sr->x; sy = sr->y; sw = sr->w; sh = sr->h; if (abs(sr->dx) >= sw || abs(sr->dy) >= sh) { /* doubt webkit would be so stupid... */ DBG("full page scroll %+03d,%+03d. convert to repaint %d,%d + %dx%d", sr->dx, sr->dy, sx, sy, sw, sh); ewk_view_repaint_add(sd->_priv, sx, sy, sw, sh); continue; } if (sx + sw > vw) sw = vw - sx; if (sy + sh > vh) sh = vh - sy; if (sw < 0) sw = 0; if (sh < 0) sh = 0; if (!sw || !sh) continue; sx -= abs(sr->dx); sy -= abs(sr->dy); sw += abs(sr->dx); sh += abs(sr->dy); ewk_view_repaint_add(sd->_priv, sx, sy, sw, sh); INF("using repaint for inner frame scolling!"); } } return EINA_TRUE; }
static Eina_Bool _ewk_view_tiled_smart_scrolls_process(Ewk_View_Smart_Data* smartData) { const Ewk_Scroll_Request* scrollRequest; const Ewk_Scroll_Request* endOfScrollRequest; size_t count; Evas_Coord contentsWidth, contentsHeight; ewk_frame_contents_size_get(smartData->main_frame, &contentsWidth, &contentsHeight); scrollRequest = ewk_view_scroll_requests_get(smartData->_priv, &count); endOfScrollRequest = scrollRequest + count; for (; scrollRequest < endOfScrollRequest; scrollRequest++) ewk_tiled_backing_store_scroll_full_offset_add(smartData->backing_store, scrollRequest->dx, scrollRequest->dy); return true; }