15b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III/* 25b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III * Copyright (C) 2018 The Android Open Source Project 35b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III * 45b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III * Licensed under the Apache License, Version 2.0 (the "License"); 55b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III * you may not use this file except in compliance with the License. 65b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III * You may obtain a copy of the License at 75b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III * 85b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III * http://www.apache.org/licenses/LICENSE-2.0 95b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III * 105b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III * Unless required by applicable law or agreed to in writing, software 115b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III * distributed under the License is distributed on an "AS IS" BASIS, 125b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III * See the License for the specific language governing permissions and 145b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III * limitations under the License. 155b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III */ 165b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III 175b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III#include "AnimatedImageThread.h" 185b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III 195b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III#include <sys/resource.h> 205b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III 215b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins IIInamespace android { 225b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins IIInamespace uirenderer { 235b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III 245b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins IIIAnimatedImageThread& AnimatedImageThread::getInstance() { 255b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III static AnimatedImageThread* sInstance = new AnimatedImageThread(); 265b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III return *sInstance; 275b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III} 285b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III 295b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins IIIAnimatedImageThread::AnimatedImageThread() { 305b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III setpriority(PRIO_PROCESS, 0, PRIORITY_NORMAL + PRIORITY_MORE_FAVORABLE); 315b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III start("AnimatedImageThread"); 325b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III} 335b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III 345b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins IIIstd::future<AnimatedImageDrawable::Snapshot> AnimatedImageThread::decodeNextFrame( 355b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III const sk_sp<AnimatedImageDrawable>& drawable) { 365b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III return queue().async([drawable]() { return drawable->decodeNextFrame(); }); 375b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III} 385b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III 395b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins IIIstd::future<AnimatedImageDrawable::Snapshot> AnimatedImageThread::reset( 405b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III const sk_sp<AnimatedImageDrawable>& drawable) { 415b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III return queue().async([drawable]() { return drawable->reset(); }); 425b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III} 435b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III 445b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III} // namespace uirenderer 455b7f426ff04820f81877ccb696bf6245dede89e7Leon Scroggins III} // namespace android 46