1e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik/* 2e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * Copyright 2011, The Android Open Source Project 3e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * 4e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * Redistribution and use in source and binary forms, with or without 5e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * modification, are permitted provided that the following conditions 6e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * are met: 7e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * * Redistributions of source code must retain the above copyright 8e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * notice, this list of conditions and the following disclaimer. 9e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * * Redistributions in binary form must reproduce the above copyright 10e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * notice, this list of conditions and the following disclaimer in the 11e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * documentation and/or other materials provided with the distribution. 12e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * 13e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY 14e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 17e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik */ 25e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik 26d8be9016b7fda67a91b4ee17b3b2e7ba692ee553Chris Craik#ifndef SurfaceCollectionManager_h 27d8be9016b7fda67a91b4ee17b3b2e7ba692ee553Chris Craik#define SurfaceCollectionManager_h 28e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik 29dfd2fb1ed3c17d0cbb4af895f74704c22130587fChris Craik#include "TestExport.h" 30dfd2fb1ed3c17d0cbb4af895f74704c22130587fChris Craik#include <utils/threads.h> 31dfd2fb1ed3c17d0cbb4af895f74704c22130587fChris Craik 32df35691cd76b673c8a24babfab42d6bec4ee465bChris Craikclass SkRect; 33e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craikclass SkCanvas; 34e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik 35e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craiknamespace WebCore { 36e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik 37246bd5b4427d0a0feaa2e1a128be9ad53100631cChris Craikclass GLWebViewState; 38dfd2fb1ed3c17d0cbb4af895f74704c22130587fChris Craikclass IntRect; 39dfd2fb1ed3c17d0cbb4af895f74704c22130587fChris Craikclass TexturesResult; 40d8be9016b7fda67a91b4ee17b3b2e7ba692ee553Chris Craikclass SurfaceCollection; 41e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik 42d8be9016b7fda67a91b4ee17b3b2e7ba692ee553Chris Craikclass TEST_EXPORT SurfaceCollectionManager { 43e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craikpublic: 4464d72d82692e48f595e7a31ac2a1680f11d9186bChris Craik SurfaceCollectionManager(); 45e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik 46d8be9016b7fda67a91b4ee17b3b2e7ba692ee553Chris Craik ~SurfaceCollectionManager(); 47e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik 48d8be9016b7fda67a91b4ee17b3b2e7ba692ee553Chris Craik bool updateWithSurfaceCollection(SurfaceCollection* collection, bool brandNew); 49e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik 5070adfd756fa5e71bd6913f3a1d8223ca26d8ec92Chris Craik void updateScrollableLayer(int layerId, int x, int y); 5170adfd756fa5e71bd6913f3a1d8223ca26d8ec92Chris Craik 52bf9aa54ac784685db3d2cd8c0d616b25b289c09eTeng-Hui Zhu int drawGL(double currentTime, IntRect& viewRect, 539e3ead124cc10fcc888a8be7df9949d3d4ba1bb7Teng-Hui Zhu SkRect& visibleContentRect, float scale, 541338d44578fe97a74e4b57b6f00005b9bed72682Teng-Hui Zhu bool scrolling, bool singleSurfaceMode, 551338d44578fe97a74e4b57b6f00005b9bed72682Teng-Hui Zhu bool* collectionsSwappedPtr, bool* newCollectionHasAnimPtr, 56bf9aa54ac784685db3d2cd8c0d616b25b289c09eTeng-Hui Zhu TexturesResult* texturesResultPtr, bool shouldDraw); 57e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik 58e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craikprivate: 59dfd2fb1ed3c17d0cbb4af895f74704c22130587fChris Craik void swap(); 60d8be9016b7fda67a91b4ee17b3b2e7ba692ee553Chris Craik void clearCollections(); 611338d44578fe97a74e4b57b6f00005b9bed72682Teng-Hui Zhu void updatePaintingCollection(SurfaceCollection* newCollection); 62150a26fa5442a5fc931e5df05808e33aac1a7deaTeng-Hui Zhu int singleSurfaceModeInvalidation(bool hasRunningAnimation, bool scrolling, bool shouldDraw); 63d8be9016b7fda67a91b4ee17b3b2e7ba692ee553Chris Craik SurfaceCollection* m_drawingCollection; 64d8be9016b7fda67a91b4ee17b3b2e7ba692ee553Chris Craik SurfaceCollection* m_paintingCollection; 65d8be9016b7fda67a91b4ee17b3b2e7ba692ee553Chris Craik SurfaceCollection* m_queuedCollection; 66e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik 67dfd2fb1ed3c17d0cbb4af895f74704c22130587fChris Craik bool m_fastSwapMode; 681338d44578fe97a74e4b57b6f00005b9bed72682Teng-Hui Zhu // Used in single surface mode only. True if the previous frame is scrolling. 691338d44578fe97a74e4b57b6f00005b9bed72682Teng-Hui Zhu bool m_previouslyScrolling; 701338d44578fe97a74e4b57b6f00005b9bed72682Teng-Hui Zhu // Used in single surface mode only. True if there is a new painting tree 711338d44578fe97a74e4b57b6f00005b9bed72682Teng-Hui Zhu // added for the current frame. 721338d44578fe97a74e4b57b6f00005b9bed72682Teng-Hui Zhu bool m_newPaintingCollection; 73e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik}; 74e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik 75e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik} // namespace WebCore 76e48d27773894f36d85e5c2e2052ab90d502e1c72Chris Craik 77d8be9016b7fda67a91b4ee17b3b2e7ba692ee553Chris Craik#endif //#define SurfaceCollectionManager_h 78