summaryrefslogtreecommitdiff
path: root/sdm/libs/hwc2/hwc_buffer_sync_handler.cpp
diff options
context:
space:
mode:
authorNaseer Ahmed <naseer@codeaurora.org>2017-05-17 14:36:46 -0400
committerNaseer Ahmed <naseer@codeaurora.org>2017-07-10 18:19:08 -0400
commit8502008020e86be16f174d968acb6ba5ce365072 (patch)
treed3dcbdb026c7cc640d9a9f7f27f95a0b0c111bc4 /sdm/libs/hwc2/hwc_buffer_sync_handler.cpp
parent8aa99e0056a9bf8c701510589c6f958ab3068747 (diff)
display: Cleanup unused code
CRs-Fixed: 2048735 Change-Id: Ief7f8ae4006ab211272191b66bd4bd854d9098b2
Diffstat (limited to 'sdm/libs/hwc2/hwc_buffer_sync_handler.cpp')
-rw-r--r--sdm/libs/hwc2/hwc_buffer_sync_handler.cpp91
1 files changed, 91 insertions, 0 deletions
diff --git a/sdm/libs/hwc2/hwc_buffer_sync_handler.cpp b/sdm/libs/hwc2/hwc_buffer_sync_handler.cpp
new file mode 100644
index 00000000..784e91b5
--- /dev/null
+++ b/sdm/libs/hwc2/hwc_buffer_sync_handler.cpp
@@ -0,0 +1,91 @@
+/*
+* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are
+* met:
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above
+* copyright notice, this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided
+* with the distribution.
+* * Neither the name of The Linux Foundation nor the names of its
+* contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <sync/sync.h>
+#include <utils/constants.h>
+#include <utils/debug.h>
+
+#include "hwc_debugger.h"
+#include "hwc_buffer_sync_handler.h"
+
+#define __CLASS__ "HWCBufferSyncHandler"
+
+namespace sdm {
+
+DisplayError HWCBufferSyncHandler::SyncWait(int fd) {
+ int error = 0;
+
+ if (fd >= 0) {
+ error = sync_wait(fd, 1000);
+ if (error < 0) {
+ DLOGE("sync_wait error errno = %d, desc = %s", errno, strerror(errno));
+ return kErrorTimeOut;
+ }
+ }
+
+ return kErrorNone;
+}
+
+DisplayError HWCBufferSyncHandler::SyncMerge(int fd1, int fd2, int *merged_fd) {
+ DisplayError error = kErrorNone;
+
+ // Merge the two fences. In the case where one of the fences is not a
+ // valid fence (e.g. NO_FENCE) merge the one valid fence with itself so
+ // that a new fence with the given name is created.
+ // TODO(user): "SyncMerge"string should be replaced with user-defined string to represent
+ // why it is merged.
+ if (fd1 >= 0 && fd2 >= 0) {
+ *merged_fd = sync_merge("SyncMerge", fd1, fd2);
+ } else if (fd1 >= 0) {
+ *merged_fd = sync_merge("SyncMerge", fd1, fd1);
+ } else if (fd2 >= 0) {
+ *merged_fd = sync_merge("SyncMerge", fd2, fd2);
+ } else {
+ *merged_fd = -1;
+ return kErrorNone;
+ }
+
+ if (*merged_fd == -1) {
+ DLOGE("Sync merge error! fd1 %d fd2 %d", fd1, fd2);
+ error = kErrorFileDescriptor;
+ }
+
+ return error;
+}
+
+bool HWCBufferSyncHandler::IsSyncSignaled(int fd) {
+ if (sync_wait(fd, 0) < 0) {
+ return false;
+ } else {
+ return true;
+ }
+}
+
+} // namespace sdm
+