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