summaryrefslogtreecommitdiffstats
path: root/services/surfaceflinger/DisplayUtils.cpp
diff options
context:
space:
mode:
authorRaj Kamal <rkamal@codeaurora.org>2015-06-23 12:55:15 -0700
committerLinux Build Service Account <lnxbuild@localhost>2015-10-06 03:22:25 -0600
commit20f9ced88123b0daca067ca55f1dc96c8b7b02e3 (patch)
tree774e7b179ead74ef6b9fb8f7566c75c02c466b60 /services/surfaceflinger/DisplayUtils.cpp
parent8eaa19460dcaaead5987332580ac338e20af456b (diff)
downloadframeworks_native-20f9ced88123b0daca067ca55f1dc96c8b7b02e3.zip
frameworks_native-20f9ced88123b0daca067ca55f1dc96c8b7b02e3.tar.gz
frameworks_native-20f9ced88123b0daca067ca55f1dc96c8b7b02e3.tar.bz2
SurfaceFlinger: Add support for DisplayUtils
Add DisplayUtils class which uses the custom implementations of ExLayer, ExSurfaceFlinger, ExHWComposer, and ExVirtualDisplaySurface classes if needed Change-Id: Ibdd8da5d3d0d602f42b76a15d0994c6aa98bee3f
Diffstat (limited to 'services/surfaceflinger/DisplayUtils.cpp')
-rw-r--r--services/surfaceflinger/DisplayUtils.cpp106
1 files changed, 106 insertions, 0 deletions
diff --git a/services/surfaceflinger/DisplayUtils.cpp b/services/surfaceflinger/DisplayUtils.cpp
new file mode 100644
index 0000000..3937df0
--- /dev/null
+++ b/services/surfaceflinger/DisplayUtils.cpp
@@ -0,0 +1,106 @@
+/* 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 <stdlib.h>
+#include <stdint.h>
+#include <sys/types.h>
+
+#include <utils/Errors.h>
+#include <utils/Log.h>
+
+#include <ui/GraphicBuffer.h>
+
+#include "DisplayUtils.h"
+#include <ExSurfaceFlinger.h>
+#include <ExLayer.h>
+#include <DisplayHardware/ExHWComposer.h>
+#include <DisplayHardware/ExVirtualDisplaySurface.h>
+#include <dlfcn.h>
+
+namespace android {
+
+DisplayUtils* DisplayUtils::sDisplayUtils = NULL;
+bool DisplayUtils::sUseExtendedImpls = false;
+
+DisplayUtils::DisplayUtils() {
+#ifdef QTI_BSP
+ sUseExtendedImpls = true;
+#endif
+}
+
+DisplayUtils* DisplayUtils::getInstance() {
+ if(sDisplayUtils == NULL) {
+ sDisplayUtils = new DisplayUtils();
+ }
+ return sDisplayUtils;
+}
+
+SurfaceFlinger* DisplayUtils::getSFInstance() {
+ if(sUseExtendedImpls) {
+ return new ExSurfaceFlinger();
+ } else {
+ return new SurfaceFlinger();
+ }
+}
+
+Layer* DisplayUtils::getLayerInstance(SurfaceFlinger* flinger,
+ const sp<Client>& client, const String8& name,
+ uint32_t w, uint32_t h, uint32_t flags) {
+ if(sUseExtendedImpls) {
+ return new ExLayer(flinger, client, name, w, h, flags);
+ } else {
+ return new Layer(flinger, client, name, w, h, flags);
+ }
+}
+
+HWComposer* DisplayUtils::getHWCInstance(
+ const sp<SurfaceFlinger>& flinger,
+ HWComposer::EventHandler& handler) {
+ if(sUseExtendedImpls) {
+ return new ExHWComposer(flinger, handler);
+ } else {
+ return new HWComposer(flinger,handler);
+ }
+}
+
+VirtualDisplaySurface* DisplayUtils::getVDSInstance(HWComposer* hwc, int32_t hwcDisplayId,
+ sp<IGraphicBufferProducer> currentStateSurface, sp<IGraphicBufferProducer> bqProducer,
+ sp<IGraphicBufferConsumer> bqConsumer, String8 currentStateDisplayName,
+ bool currentStateIsSecure)
+{
+ if(sUseExtendedImpls) {
+ return new ExVirtualDisplaySurface(*hwc, hwcDisplayId, currentStateSurface, bqProducer,
+ bqConsumer, currentStateDisplayName, currentStateIsSecure);
+ } else {
+ return new VirtualDisplaySurface(*hwc, hwcDisplayId, currentStateSurface, bqProducer,
+ bqConsumer, currentStateDisplayName);
+ }
+}
+
+}; // namespace android
+