From 81bac09fa6b01dd1495644d9c825c3666762fced Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Wed, 14 Jul 2010 17:59:35 -0700 Subject: move native services under services/ moved surfaceflinger, audioflinger, cameraservice all native services should now reside in this location. Change-Id: Iee42b83dd2a94c3bf5107ab0895fe2dfcd5337a8 --- libs/surfaceflinger/SurfaceFlinger.h | 420 ----------------------------------- 1 file changed, 420 deletions(-) delete mode 100644 libs/surfaceflinger/SurfaceFlinger.h (limited to 'libs/surfaceflinger/SurfaceFlinger.h') diff --git a/libs/surfaceflinger/SurfaceFlinger.h b/libs/surfaceflinger/SurfaceFlinger.h deleted file mode 100644 index 0bfc1709e8..0000000000 --- a/libs/surfaceflinger/SurfaceFlinger.h +++ /dev/null @@ -1,420 +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_SURFACE_FLINGER_H -#define ANDROID_SURFACE_FLINGER_H - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include - -#include "Barrier.h" -#include "Layer.h" - -#include "MessageQueue.h" - -struct copybit_device_t; -struct overlay_device_t; - -namespace android { - -// --------------------------------------------------------------------------- - -class Client; -class DisplayHardware; -class FreezeLock; -class Layer; -class LayerBlur; -class LayerDim; -class LayerBuffer; - -#define LIKELY( exp ) (__builtin_expect( (exp) != 0, true )) -#define UNLIKELY( exp ) (__builtin_expect( (exp) != 0, false )) - -// --------------------------------------------------------------------------- - -class Client : public BnSurfaceComposerClient -{ -public: - Client(const sp& flinger); - ~Client(); - - status_t initCheck() const; - - // protected by SurfaceFlinger::mStateLock - ssize_t attachLayer(const sp& layer); - void detachLayer(const LayerBaseClient* layer); - sp getLayerUser(int32_t i) const; - -private: - - // ISurfaceComposerClient interface - virtual sp getControlBlock() const; - virtual ssize_t getTokenForSurface(const sp& sur) const; - virtual sp createSurface( - surface_data_t* params, int pid, const String8& name, - DisplayID display, uint32_t w, uint32_t h,PixelFormat format, - uint32_t flags); - virtual status_t destroySurface(SurfaceID surfaceId); - virtual status_t setState(int32_t count, const layer_state_t* states); - - DefaultKeyedVector< size_t, wp > mLayers; - sp mFlinger; - int32_t mNameGenerator; -}; - -class UserClient : public BnSurfaceComposerClient -{ -public: - // pointer to this client's control block - SharedClient* ctrlblk; - -public: - UserClient(const sp& flinger); - ~UserClient(); - - status_t initCheck() const; - - // protected by SurfaceFlinger::mStateLock - void detachLayer(const Layer* layer); - -private: - - // ISurfaceComposerClient interface - virtual sp getControlBlock() const; - virtual ssize_t getTokenForSurface(const sp& sur) const; - virtual sp createSurface( - surface_data_t* params, int pid, const String8& name, - DisplayID display, uint32_t w, uint32_t h,PixelFormat format, - uint32_t flags); - virtual status_t destroySurface(SurfaceID surfaceId); - virtual status_t setState(int32_t count, const layer_state_t* states); - - // atomic-ops - mutable volatile int32_t mBitmap; - - sp mCblkHeap; - sp mFlinger; -}; - -// --------------------------------------------------------------------------- - -class GraphicPlane -{ -public: - static status_t orientationToTransfrom(int orientation, int w, int h, - Transform* tr); - - GraphicPlane(); - ~GraphicPlane(); - - bool initialized() const; - - void setDisplayHardware(DisplayHardware *); - status_t setOrientation(int orientation); - int getOrientation() const { return mOrientation; } - int getWidth() const; - int getHeight() const; - - const DisplayHardware& displayHardware() const; - const Transform& transform() const; - EGLDisplay getEGLDisplay() const; - -private: - GraphicPlane(const GraphicPlane&); - GraphicPlane operator = (const GraphicPlane&); - - DisplayHardware* mHw; - Transform mGlobalTransform; - Transform mDisplayTransform; - int mOrientation; - float mDisplayWidth; - float mDisplayHeight; - int mWidth; - int mHeight; -}; - -// --------------------------------------------------------------------------- - -enum { - eTransactionNeeded = 0x01, - eTraversalNeeded = 0x02 -}; - -class SurfaceFlinger : public BnSurfaceComposer, protected Thread -{ -public: - static void instantiate(); - static void shutdown(); - - SurfaceFlinger(); - virtual ~SurfaceFlinger(); - void init(); - - virtual status_t onTransact( - uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags); - - virtual status_t dump(int fd, const Vector& args); - - // ISurfaceComposer interface - virtual sp createConnection(); - virtual sp createClientConnection(); - virtual sp getCblk() const; - virtual void bootFinished(); - virtual void openGlobalTransaction(); - virtual void closeGlobalTransaction(); - virtual status_t freezeDisplay(DisplayID dpy, uint32_t flags); - virtual status_t unfreezeDisplay(DisplayID dpy, uint32_t flags); - virtual int setOrientation(DisplayID dpy, int orientation, uint32_t flags); - virtual void signal() const; - - void screenReleased(DisplayID dpy); - void screenAcquired(DisplayID dpy); - - overlay_control_device_t* getOverlayEngine() const; - - status_t removeLayer(const sp& layer); - status_t addLayer(const sp& layer); - status_t invalidateLayerVisibility(const sp& layer); - - sp getLayer(const sp& sur) const; - -private: - friend class Client; - friend class LayerBase; - friend class LayerBuffer; - friend class LayerBaseClient; - friend class LayerBaseClient::Surface; - friend class Layer; - friend class LayerBlur; - friend class LayerDim; - - sp createSurface(const sp& client, - int pid, const String8& name, - ISurfaceComposerClient::surface_data_t* params, - DisplayID display, uint32_t w, uint32_t h, PixelFormat format, - uint32_t flags); - - sp createNormalSurface( - const sp& client, DisplayID display, - uint32_t w, uint32_t h, uint32_t flags, - PixelFormat& format); - - sp createBlurSurface( - const sp& client, DisplayID display, - uint32_t w, uint32_t h, uint32_t flags); - - sp createDimSurface( - const sp& client, DisplayID display, - uint32_t w, uint32_t h, uint32_t flags); - - sp createPushBuffersSurface( - const sp& client, DisplayID display, - uint32_t w, uint32_t h, uint32_t flags); - - status_t removeSurface(const sp& client, SurfaceID sid); - status_t destroySurface(const sp& layer); - status_t setClientState(const sp& client, - int32_t count, const layer_state_t* states); - - - class LayerVector { - public: - inline LayerVector() { } - LayerVector(const LayerVector&); - inline size_t size() const { return layers.size(); } - inline sp const* array() const { return layers.array(); } - ssize_t add(const sp&, Vector< sp >::compar_t); - ssize_t remove(const sp&); - ssize_t reorder(const sp&, Vector< sp >::compar_t); - ssize_t indexOf(const sp& key, size_t guess=0) const; - inline sp operator [] (size_t i) const { return layers[i]; } - private: - KeyedVector< sp , size_t> lookup; - Vector< sp > layers; - }; - - struct State { - State() { - orientation = ISurfaceComposer::eOrientationDefault; - freezeDisplay = 0; - } - LayerVector layersSortedByZ; - uint8_t orientation; - uint8_t orientationType; - uint8_t freezeDisplay; - }; - - virtual bool threadLoop(); - virtual status_t readyToRun(); - virtual void onFirstRef(); - -public: // hack to work around gcc 4.0.3 bug - const GraphicPlane& graphicPlane(int dpy) const; - GraphicPlane& graphicPlane(int dpy); -private: - - void waitForEvent(); -public: // hack to work around gcc 4.0.3 bug - void signalEvent(); -private: - void handleConsoleEvents(); - void handleTransaction(uint32_t transactionFlags); - void handleTransactionLocked( - uint32_t transactionFlags, - Vector< sp >& ditchedLayers); - - void computeVisibleRegions( - LayerVector& currentLayers, - Region& dirtyRegion, - Region& wormholeRegion); - - void handlePageFlip(); - bool lockPageFlip(const LayerVector& currentLayers); - void unlockPageFlip(const LayerVector& currentLayers); - void handleRepaint(); - void postFramebuffer(); - void composeSurfaces(const Region& dirty); - void unlockClients(); - - - ssize_t addClientLayer(const sp& client, - const sp& lbc); - status_t addLayer_l(const sp& layer); - status_t removeLayer_l(const sp& layer); - status_t purgatorizeLayer_l(const sp& layer); - - uint32_t getTransactionFlags(uint32_t flags); - uint32_t setTransactionFlags(uint32_t flags); - void commitTransaction(); - - - friend class FreezeLock; - sp getFreezeLock() const; - inline void incFreezeCount() { - if (mFreezeCount == 0) - mFreezeDisplayTime = 0; - mFreezeCount++; - } - inline void decFreezeCount() { if (mFreezeCount > 0) mFreezeCount--; } - inline bool hasFreezeRequest() const { return mFreezeDisplay; } - inline bool isFrozen() const { - return (mFreezeDisplay || mFreezeCount>0) && mBootFinished; - } - - - void debugFlashRegions(); - void debugShowFPS() const; - void drawWormhole() const; - - - mutable MessageQueue mEventQueue; - - status_t postMessageAsync(const sp& msg, - nsecs_t reltime=0, uint32_t flags = 0); - - status_t postMessageSync(const sp& msg, - nsecs_t reltime=0, uint32_t flags = 0); - - // access must be protected by mStateLock - mutable Mutex mStateLock; - State mCurrentState; - State mDrawingState; - volatile int32_t mTransactionFlags; - volatile int32_t mTransactionCount; - Condition mTransactionCV; - bool mResizeTransationPending; - - // protected by mStateLock (but we could use another lock) - GraphicPlane mGraphicPlanes[1]; - bool mLayersRemoved; - DefaultKeyedVector< wp, wp > mLayerMap; - - // constant members (no synchronization needed for access) - sp mServerHeap; - surface_flinger_cblk_t* mServerCblk; - GLuint mWormholeTexName; - nsecs_t mBootTime; - Permission mHardwareTest; - Permission mAccessSurfaceFlinger; - Permission mDump; - - // Can only accessed from the main thread, these members - // don't need synchronization - Region mDirtyRegion; - Region mDirtyRegionRemovedLayer; - Region mInvalidRegion; - Region mWormholeRegion; - bool mVisibleRegionsDirty; - bool mDeferReleaseConsole; - bool mFreezeDisplay; - int32_t mFreezeCount; - nsecs_t mFreezeDisplayTime; - - // don't use a lock for these, we don't care - int mDebugRegion; - int mDebugBackground; - volatile nsecs_t mDebugInSwapBuffers; - nsecs_t mLastSwapBufferTime; - volatile nsecs_t mDebugInTransaction; - nsecs_t mLastTransactionTime; - bool mBootFinished; - - // these are thread safe - mutable Barrier mReadyToRunBarrier; - - // atomic variables - enum { - eConsoleReleased = 1, - eConsoleAcquired = 2 - }; - volatile int32_t mConsoleSignals; - - // only written in the main thread, only read in other threads - volatile int32_t mSecureFrameBuffer; -}; - -// --------------------------------------------------------------------------- - -class FreezeLock : public LightRefBase { - SurfaceFlinger* mFlinger; -public: - FreezeLock(SurfaceFlinger* flinger) - : mFlinger(flinger) { - mFlinger->incFreezeCount(); - } - ~FreezeLock() { - mFlinger->decFreezeCount(); - } -}; - -// --------------------------------------------------------------------------- -}; // namespace android - -#endif // ANDROID_SURFACE_FLINGER_H -- cgit v1.2.3-59-g8ed1b