You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							102 lines
						
					
					
						
							3.3 KiB
						
					
					
				
			
		
		
	
	
							102 lines
						
					
					
						
							3.3 KiB
						
					
					
				/*
 | 
						|
 * 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 INCLUDED_FROM_FRAMEBUFFER_NATIVE_WINDOW_CPP
 | 
						|
#warning "FramebufferNativeWindow is deprecated"
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef ANDROID_FRAMEBUFFER_NATIVE_WINDOW_H
 | 
						|
#define ANDROID_FRAMEBUFFER_NATIVE_WINDOW_H
 | 
						|
 | 
						|
#include <stdint.h>
 | 
						|
#include <sys/types.h>
 | 
						|
 | 
						|
#include <EGL/egl.h>
 | 
						|
 | 
						|
#include <utils/threads.h>
 | 
						|
#include <utils/String8.h>
 | 
						|
 | 
						|
#include <ui/ANativeObjectBase.h>
 | 
						|
#include <ui/Rect.h>
 | 
						|
 | 
						|
#define MIN_NUM_FRAME_BUFFERS  2
 | 
						|
#define MAX_NUM_FRAME_BUFFERS  3
 | 
						|
 | 
						|
extern "C" EGLNativeWindowType android_createDisplaySurface(void);
 | 
						|
 | 
						|
// ---------------------------------------------------------------------------
 | 
						|
namespace android {
 | 
						|
// ---------------------------------------------------------------------------
 | 
						|
 | 
						|
class Surface;
 | 
						|
class NativeBuffer;
 | 
						|
 | 
						|
// ---------------------------------------------------------------------------
 | 
						|
 | 
						|
class FramebufferNativeWindow 
 | 
						|
    : public ANativeObjectBase<
 | 
						|
        ANativeWindow, 
 | 
						|
        FramebufferNativeWindow, 
 | 
						|
        LightRefBase<FramebufferNativeWindow> >
 | 
						|
{
 | 
						|
public:
 | 
						|
    FramebufferNativeWindow(); 
 | 
						|
 | 
						|
    framebuffer_device_t const * getDevice() const { return fbDev; } 
 | 
						|
 | 
						|
    bool isUpdateOnDemand() const { return mUpdateOnDemand; }
 | 
						|
    status_t setUpdateRectangle(const Rect& updateRect);
 | 
						|
    status_t compositionComplete();
 | 
						|
 | 
						|
    void dump(String8& result);
 | 
						|
 | 
						|
    // for debugging only
 | 
						|
    int getCurrentBufferIndex() const;
 | 
						|
 | 
						|
private:
 | 
						|
    friend class LightRefBase<FramebufferNativeWindow>;    
 | 
						|
    ~FramebufferNativeWindow(); // this class cannot be overloaded
 | 
						|
    static int setSwapInterval(ANativeWindow* window, int interval);
 | 
						|
    static int dequeueBuffer(ANativeWindow* window, ANativeWindowBuffer** buffer, int* fenceFd);
 | 
						|
    static int queueBuffer(ANativeWindow* window, ANativeWindowBuffer* buffer, int fenceFd);
 | 
						|
    static int query(const ANativeWindow* window, int what, int* value);
 | 
						|
    static int perform(ANativeWindow* window, int operation, ...);
 | 
						|
 | 
						|
    static int dequeueBuffer_DEPRECATED(ANativeWindow* window, ANativeWindowBuffer** buffer);
 | 
						|
    static int queueBuffer_DEPRECATED(ANativeWindow* window, ANativeWindowBuffer* buffer);
 | 
						|
    static int lockBuffer_DEPRECATED(ANativeWindow* window, ANativeWindowBuffer* buffer);
 | 
						|
 | 
						|
    framebuffer_device_t* fbDev;
 | 
						|
    alloc_device_t* grDev;
 | 
						|
 | 
						|
    sp<NativeBuffer> buffers[MAX_NUM_FRAME_BUFFERS];
 | 
						|
    sp<NativeBuffer> front;
 | 
						|
    
 | 
						|
    mutable Mutex mutex;
 | 
						|
    Condition mCondition;
 | 
						|
    int32_t mNumBuffers;
 | 
						|
    int32_t mNumFreeBuffers;
 | 
						|
    int32_t mBufferHead;
 | 
						|
    int32_t mCurrentBufferIndex;
 | 
						|
    bool mUpdateOnDemand;
 | 
						|
};
 | 
						|
    
 | 
						|
// ---------------------------------------------------------------------------
 | 
						|
}; // namespace android
 | 
						|
// ---------------------------------------------------------------------------
 | 
						|
 | 
						|
#endif // ANDROID_FRAMEBUFFER_NATIVE_WINDOW_H
 | 
						|
 | 
						|
 |