diff options
Diffstat (limited to 'include/private/gui')
-rw-r--r-- | include/private/gui/ComposerService.h | 19 | ||||
-rw-r--r-- | include/private/gui/LayerState.h | 51 | ||||
-rw-r--r-- | include/private/gui/SharedBufferStack.h | 59 |
3 files changed, 62 insertions, 67 deletions
diff --git a/include/private/gui/ComposerService.h b/include/private/gui/ComposerService.h index d04491a..ff2f9bf 100644 --- a/include/private/gui/ComposerService.h +++ b/include/private/gui/ComposerService.h @@ -30,21 +30,30 @@ namespace android { class IMemoryHeap; class ISurfaceComposer; -class surface_flinger_cblk_t; // --------------------------------------------------------------------------- +// This holds our connection to the composer service (i.e. SurfaceFlinger). +// If the remote side goes away, we will re-establish the connection. +// Users of this class should not retain the value from +// getComposerService() for an extended period. +// +// (It's not clear that using Singleton is useful here anymore.) class ComposerService : public Singleton<ComposerService> { - // these are constants sp<ISurfaceComposer> mComposerService; - sp<IMemoryHeap> mServerCblkMemory; - surface_flinger_cblk_t volatile* mServerCblk; + sp<IBinder::DeathRecipient> mDeathObserver; + Mutex mLock; + ComposerService(); + void connectLocked(); + void composerServiceDied(); friend class Singleton<ComposerService>; public: + + // Get a connection to the Composer Service. This will block until + // a connection is established. static sp<ISurfaceComposer> getComposerService(); - static surface_flinger_cblk_t const volatile * getControlBlock(); }; // --------------------------------------------------------------------------- diff --git a/include/private/gui/LayerState.h b/include/private/gui/LayerState.h index 9151c11..a7eb48c 100644 --- a/include/private/gui/LayerState.h +++ b/include/private/gui/LayerState.h @@ -33,10 +33,27 @@ class ISurfaceComposerClient; struct layer_state_t { + + enum { + eLayerHidden = 0x01, + }; + + enum { + ePositionChanged = 0x00000001, + eLayerChanged = 0x00000002, + eSizeChanged = 0x00000004, + eAlphaChanged = 0x00000008, + eMatrixChanged = 0x00000010, + eTransparentRegionChanged = 0x00000020, + eVisibilityChanged = 0x00000040, + eLayerStackChanged = 0x00000080, + eCropChanged = 0x00000100, + }; + layer_state_t() : surface(0), what(0), - x(0), y(0), z(0), w(0), h(0), - alpha(0), tint(0), flags(0), mask(0), + x(0), y(0), z(0), w(0), h(0), layerStack(0), + alpha(0), flags(0), mask(0), reserved(0) { matrix.dsdx = matrix.dtdy = 1.0f; @@ -60,8 +77,8 @@ struct layer_state_t { uint32_t z; uint32_t w; uint32_t h; + uint32_t layerStack; float alpha; - uint32_t tint; uint8_t flags; uint8_t mask; uint8_t reserved; @@ -78,6 +95,34 @@ struct ComposerState { status_t read(const Parcel& input); }; +struct DisplayState { + + enum { + eOrientationDefault = 0, + eOrientation90 = 1, + eOrientation180 = 2, + eOrientation270 = 3, + eOrientationUnchanged = 4, + eOrientationSwapMask = 0x01 + }; + + enum { + eSurfaceChanged = 0x01, + eLayerStackChanged = 0x02, + eDisplayProjectionChanged = 0x04 + }; + + uint32_t what; + sp<IBinder> token; + sp<ISurfaceTexture> surface; + uint32_t layerStack; + uint32_t orientation; + Rect viewport; + Rect frame; + status_t write(Parcel& output) const; + status_t read(const Parcel& input); +}; + }; // namespace android #endif // ANDROID_SF_LAYER_STATE_H diff --git a/include/private/gui/SharedBufferStack.h b/include/private/gui/SharedBufferStack.h deleted file mode 100644 index 0da03d1..0000000 --- a/include/private/gui/SharedBufferStack.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (C) 2007 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_SF_SHARED_BUFFER_STACK_H -#define ANDROID_SF_SHARED_BUFFER_STACK_H - -#include <stdint.h> -#include <sys/types.h> - -#include <utils/Debug.h> - -namespace android { -// --------------------------------------------------------------------------- - -#define NUM_DISPLAY_MAX 4 - -struct display_cblk_t -{ - uint16_t w; - uint16_t h; - uint8_t format; - uint8_t orientation; - uint8_t reserved[2]; - float fps; - float density; - float xdpi; - float ydpi; - uint32_t pad[2]; -}; - -struct surface_flinger_cblk_t // 4KB max -{ - uint8_t connected; - uint8_t reserved[3]; - uint32_t pad[7]; - display_cblk_t displays[NUM_DISPLAY_MAX]; -}; - -// --------------------------------------------------------------------------- - -COMPILE_TIME_ASSERT(sizeof(surface_flinger_cblk_t) <= 4096) - -// --------------------------------------------------------------------------- -}; // namespace android - -#endif /* ANDROID_SF_SHARED_BUFFER_STACK_H */ |