diff options
Diffstat (limited to 'include/DrmFramebuffer.h')
-rw-r--r-- | include/DrmFramebuffer.h | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/include/DrmFramebuffer.h b/include/DrmFramebuffer.h deleted file mode 100644 index 33ca0db..0000000 --- a/include/DrmFramebuffer.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef ANDROID_DRM_FRAMEBUFFER_ -#define ANDROID_DRM_FRAMEBUFFER_ - -#include <stdint.h> -#include <sync/sync.h> -#include <ui/GraphicBuffer.h> - -namespace android { - -struct DrmFramebuffer { - DrmFramebuffer() : release_fence_fd_(-1) { - } - - ~DrmFramebuffer() { - if (release_fence_fd() >= 0) - close(release_fence_fd()); - } - - bool is_valid() { - return buffer_ != NULL; - } - - sp<GraphicBuffer> buffer() { - return buffer_; - } - - int release_fence_fd() { - return release_fence_fd_; - } - - void set_release_fence_fd(int fd) { - if (release_fence_fd_ >= 0) - close(release_fence_fd_); - release_fence_fd_ = fd; - } - - bool Allocate(uint32_t w, uint32_t h) { - if (is_valid()) { - if (buffer_->getWidth() == w && buffer_->getHeight() == h) - return true; - - if (release_fence_fd_ >= 0) { - if (sync_wait(release_fence_fd_, kReleaseWaitTimeoutMs) != 0) { - ALOGE("Wait for release fence failed\n"); - return false; - } - } - Clear(); - } - buffer_ = new GraphicBuffer(w, h, PIXEL_FORMAT_RGB_888, - GRALLOC_USAGE_HW_FB | GRALLOC_USAGE_HW_RENDER | - GRALLOC_USAGE_HW_COMPOSER); - release_fence_fd_ = -1; - return is_valid(); - } - - void Clear() { - if (!is_valid()) - return; - - if (release_fence_fd_ >= 0) { - close(release_fence_fd_); - release_fence_fd_ = -1; - } - - buffer_.clear(); - } - - int WaitReleased(int timeout_milliseconds) { - if (!is_valid()) - return 0; - if (release_fence_fd_ < 0) - return 0; - - int ret = sync_wait(release_fence_fd_, timeout_milliseconds); - return ret; - } - - // Somewhat arbitrarily chosen, but wanted to stay below 3000ms, which is the - // system timeout - static const int kReleaseWaitTimeoutMs = 1500; - - private: - sp<GraphicBuffer> buffer_; - int release_fence_fd_; -}; -} // namespace android - -#endif // ANDROID_DRM_FRAMEBUFFER_ |