replicant-frameworks_native/services/surfaceflinger/DisplayHardware/HWComposer.h
Mathias Agopian 7ee4cd5556 fix a bug that caused the off animation to not show sometimes
this happened when the overlays were in use, since the animation
is rendered in the FB and the FB is not used.

we now have a way to turn hwc off temporarily.

Change-Id: I3385f0c25bb9cc91948e7b26e7cd31ed18c36ace
2011-09-02 12:22:39 -07:00

91 lines
2.3 KiB
C++

/*
* Copyright (C) 2010 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_HWCOMPOSER_H
#define ANDROID_SF_HWCOMPOSER_H
#include <stdint.h>
#include <sys/types.h>
#include <EGL/egl.h>
#include <hardware/hwcomposer.h>
#include <utils/StrongPointer.h>
namespace android {
// ---------------------------------------------------------------------------
class String8;
class SurfaceFlinger;
class HWComposer
{
public:
HWComposer(const sp<SurfaceFlinger>& flinger);
~HWComposer();
status_t initCheck() const;
// tells the HAL what the framebuffer is
void setFrameBuffer(EGLDisplay dpy, EGLSurface sur);
// create a work list for numLayers layer
status_t createWorkList(size_t numLayers);
// Asks the HAL what it can do
status_t prepare() const;
// disable hwc until next createWorkList
status_t disable();
// commits the list
status_t commit() const;
// release hardware resources
status_t release() const;
size_t getNumLayers() const;
hwc_layer_t* getLayers() const;
// for debugging
void dump(String8& out, char* scratch, size_t SIZE) const;
private:
struct cb_context {
hwc_procs_t procs;
HWComposer* hwc;
};
static void hook_invalidate(struct hwc_procs* procs);
void invalidate();
sp<SurfaceFlinger> mFlinger;
hw_module_t const* mModule;
hwc_composer_device_t* mHwc;
hwc_layer_list_t* mList;
size_t mCapacity;
hwc_display_t mDpy;
hwc_surface_t mSur;
cb_context mCBContext;
};
// ---------------------------------------------------------------------------
}; // namespace android
#endif // ANDROID_SF_HWCOMPOSER_H