diff options
| -rw-r--r-- | services/surfaceflinger/Android.bp | 1 | ||||
| -rw-r--r-- | services/surfaceflinger/ColorLayer.h | 15 | ||||
| -rw-r--r-- | services/surfaceflinger/ContainerLayer.cpp | 39 | ||||
| -rw-r--r-- | services/surfaceflinger/ContainerLayer.h | 40 | ||||
| -rw-r--r-- | services/surfaceflinger/Layer.h | 2 |
5 files changed, 85 insertions, 12 deletions
diff --git a/services/surfaceflinger/Android.bp b/services/surfaceflinger/Android.bp index 3531c4ebd9..ecb5971ece 100644 --- a/services/surfaceflinger/Android.bp +++ b/services/surfaceflinger/Android.bp @@ -84,6 +84,7 @@ filegroup { "BufferLayerConsumer.cpp", "Client.cpp", "ColorLayer.cpp", + "ContainerLayer.cpp", "DisplayDevice.cpp", "DisplayHardware/ComposerHal.cpp", "DisplayHardware/FramebufferSurface.cpp", diff --git a/services/surfaceflinger/ColorLayer.h b/services/surfaceflinger/ColorLayer.h index 8f92f0a957..0cde398ce9 100644 --- a/services/surfaceflinger/ColorLayer.h +++ b/services/surfaceflinger/ColorLayer.h @@ -13,16 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#pragma once -#ifndef ANDROID_COLOR_LAYER_H -#define ANDROID_COLOR_LAYER_H - -#include <stdint.h> #include <sys/types.h> -#include "Layer.h" +#include <cstdint> -// --------------------------------------------------------------------------- +#include "Layer.h" namespace android { @@ -40,8 +37,4 @@ public: void setPerFrameData(const sp<const DisplayDevice>& displayDevice) override; }; -// --------------------------------------------------------------------------- - -}; // namespace android - -#endif // ANDROID_COLOR_LAYER_H +} // namespace android diff --git a/services/surfaceflinger/ContainerLayer.cpp b/services/surfaceflinger/ContainerLayer.cpp new file mode 100644 index 0000000000..2f89cc1d76 --- /dev/null +++ b/services/surfaceflinger/ContainerLayer.cpp @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2018 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. + */ + +// #define LOG_NDEBUG 0 +#undef LOG_TAG +#define LOG_TAG "AbstractLayer" + +#include "AbstractLayer.h" + +namespace android { + +AbstractLayer::AbstractLayer(SurfaceFlinger* flinger, const sp<Client>& client, const String8& name, + uint32_t w, uint32_t h, uint32_t flags) + : Layer(flinger, client, name, w, h, flags) { + mDrawingState = mCurrentState; +} + +void AbstractLayer::onDraw(const RenderArea&, const Region& /* clip */, bool) const {} + +bool AbstractLayer::isVisible() const { + return !isHiddenByPolicy(); +} + +void AbstractLayer::setPerFrameData(const sp<const DisplayDevice>&) {} + +} // namespace android diff --git a/services/surfaceflinger/ContainerLayer.h b/services/surfaceflinger/ContainerLayer.h new file mode 100644 index 0000000000..808ae3367d --- /dev/null +++ b/services/surfaceflinger/ContainerLayer.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2018 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. + */ +#pragma once + +#include <sys/types.h> + +#include <cstdint> + +#include "Layer.h" + +namespace android { + +class AbstractLayer : public Layer { +public: + AbstractLayer(SurfaceFlinger* flinger, const sp<Client>& client, const String8& name, + uint32_t w, uint32_t h, uint32_t flags); + virtual ~AbstractLayer() = default; + + const char* getTypeId() const override { return "AbstractLayer"; } + void onDraw(const RenderArea& renderArea, const Region& clip, + bool useIdentityTransform) const override; + bool isVisible() const override; + + void setPerFrameData(const sp<const DisplayDevice>& displayDevice) override; +}; + +} // namespace android diff --git a/services/surfaceflinger/Layer.h b/services/surfaceflinger/Layer.h index ef8c7b0812..ab004f2a6f 100644 --- a/services/surfaceflinger/Layer.h +++ b/services/surfaceflinger/Layer.h @@ -17,7 +17,6 @@ #ifndef ANDROID_LAYER_H #define ANDROID_LAYER_H -#include <stdint.h> #include <sys/types.h> #include <utils/RefBase.h> @@ -35,6 +34,7 @@ #include <gui/BufferQueue.h> #include <list> +#include <cstdint> #include "Client.h" #include "FrameTracker.h" |