Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa3403bb authored by The Android Automerger's avatar The Android Automerger
Browse files

Merge branch 'master' into honeycomb-release

parents 83d46db6 f73ae870
Loading
Loading
Loading
Loading
+0 −83
Original line number Diff line number Diff line
/*
 * Copyright (C) 2008 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_UI_PRIVATE_SW_GRALLOC_HANDLE_H
#define ANDROID_UI_PRIVATE_SW_GRALLOC_HANDLE_H

#include <stdint.h>
#include <limits.h>
#include <sys/cdefs.h>
#include <hardware/gralloc.h>
#include <errno.h>

#include <cutils/native_handle.h>

namespace android {

/*****************************************************************************/

struct sw_gralloc_handle_t : public native_handle 
{
    // file-descriptors
    int     fd;
    // ints
    int     magic;
    int     size;
    int     base;
    int     prot;
    int     pid;

    static const int sNumInts = 5;
    static const int sNumFds = 1;
    static const int sMagic = '_sgh';

    sw_gralloc_handle_t() :
        fd(-1), magic(sMagic), size(0), base(0), prot(0), pid(getpid())
    {
        version = sizeof(native_handle);
        numInts = sNumInts;
        numFds = sNumFds;
    }
    ~sw_gralloc_handle_t() {
        magic = 0;
    }

    static int validate(const native_handle* h) {
        const sw_gralloc_handle_t* hnd = (const sw_gralloc_handle_t*)h;
        if (!h || h->version != sizeof(native_handle) ||
                h->numInts != sNumInts || h->numFds != sNumFds ||
                hnd->magic != sMagic) 
        {
            return -EINVAL;
        }
        return 0;
    }

    static status_t alloc(uint32_t w, uint32_t h, int format,
            int usage, buffer_handle_t* handle, int32_t* stride);
    static status_t free(sw_gralloc_handle_t* hnd);
    static status_t registerBuffer(sw_gralloc_handle_t* hnd);
    static status_t unregisterBuffer(sw_gralloc_handle_t* hnd);
    static status_t lock(sw_gralloc_handle_t* hnd, int usage,
            int l, int t, int w, int h, void** vaddr);
    static status_t unlock(sw_gralloc_handle_t* hnd);
};

/*****************************************************************************/

}; // namespace android

#endif /* ANDROID_UI_PRIVATE_SW_GRALLOC_HANDLE_H */
+3 −49
Original line number Diff line number Diff line
@@ -34,18 +34,15 @@ namespace android {

typedef int32_t    SurfaceID;

class IMemoryHeap;
class OverlayRef;
class GraphicBuffer;

class ISurface : public IInterface
{
protected:
    enum {
        REGISTER_BUFFERS = IBinder::FIRST_CALL_TRANSACTION,
        UNREGISTER_BUFFERS,
        POST_BUFFER, // one-way transaction
        CREATE_OVERLAY,
        RESERVED0 = IBinder::FIRST_CALL_TRANSACTION,
        RESERVED1,
        RESERVED2,
        REQUEST_BUFFER,
        SET_BUFFER_COUNT,
    };
@@ -66,49 +63,6 @@ public:
     * sets the number of buffers dequeuable for this surface.
     */
    virtual status_t setBufferCount(int bufferCount) = 0;
    
    // ------------------------------------------------------------------------
    // Deprecated...
    // ------------------------------------------------------------------------

    class BufferHeap {
    public:
        enum {
            /* rotate source image */
            ROT_0     = 0,
            ROT_90    = HAL_TRANSFORM_ROT_90,
            ROT_180   = HAL_TRANSFORM_ROT_180,
            ROT_270   = HAL_TRANSFORM_ROT_270,
        };
        BufferHeap();
        
        BufferHeap(uint32_t w, uint32_t h,
                int32_t hor_stride, int32_t ver_stride, 
                PixelFormat format, const sp<IMemoryHeap>& heap);
        
        BufferHeap(uint32_t w, uint32_t h,
                int32_t hor_stride, int32_t ver_stride, 
                PixelFormat format, uint32_t transform, uint32_t flags,
                const sp<IMemoryHeap>& heap);
        
        ~BufferHeap(); 
        
        uint32_t w;
        uint32_t h;
        int32_t hor_stride;
        int32_t ver_stride;
        PixelFormat format;
        uint32_t transform;
        uint32_t flags;
        sp<IMemoryHeap> heap;
    };
    
    virtual status_t registerBuffers(const BufferHeap& buffers) = 0;
    virtual void postBuffer(ssize_t offset) = 0; // one-way
    virtual void unregisterBuffers() = 0;
    
    virtual sp<OverlayRef> createOverlay(
            uint32_t w, uint32_t h, int32_t format, int32_t orientation) = 0;
};

// ----------------------------------------------------------------------------
+0 −1
Original line number Diff line number Diff line
@@ -42,7 +42,6 @@ public:
        eDestroyBackbuffer  = 0x00000020,
        eSecure             = 0x00000080,
        eNonPremultiplied   = 0x00000100,
        ePushBuffers        = 0x00000200,
        eOpaque             = 0x00000400,

        eFXSurfaceNormal    = 0x00000000,
+4 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
#include <EGL/egl.h>

#include <utils/threads.h>
#include <utils/String8.h>
#include <ui/Rect.h>

#include <pixelflinger/pixelflinger.h>
@@ -57,6 +58,8 @@ public:
    status_t setUpdateRectangle(const Rect& updateRect);
    status_t compositionComplete();

    void dump(String8& result);

    // for debugging only
    int getCurrentBufferIndex() const;

include/ui/Overlay.h

deleted100644 → 0
+0 −119
Original line number Diff line number Diff line
/*
 * 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_OVERLAY_H
#define ANDROID_OVERLAY_H

#include <stdint.h>
#include <sys/types.h>

#include <utils/Errors.h>
#include <binder/IInterface.h>
#include <utils/RefBase.h>
#include <utils/threads.h>

#include <ui/PixelFormat.h>
#include <ui/IOverlay.h>

#include <hardware/overlay.h>

namespace android {

class IMemory;
class IMemoryHeap;

// ----------------------------------------------------------------------------

class OverlayRef : public LightRefBase<OverlayRef>
{
public:
    OverlayRef(overlay_handle_t, const sp<IOverlay>&,
            uint32_t w, uint32_t h, int32_t f, uint32_t ws, uint32_t hs);

    static sp<OverlayRef> readFromParcel(const Parcel& data);
    static status_t writeToParcel(Parcel* reply, const sp<OverlayRef>& o);    

private:
    friend class LightRefBase<OverlayRef>;
    friend class Overlay;

    OverlayRef();
    virtual ~OverlayRef();

    overlay_handle_t mOverlayHandle;
    sp<IOverlay> mOverlayChannel;
    uint32_t mWidth;
    uint32_t mHeight;
    int32_t  mFormat;
    int32_t  mWidthStride;
    int32_t  mHeightStride;
    bool mOwnHandle;
};

// ----------------------------------------------------------------------------

class Overlay : public virtual RefBase
{
public:
    Overlay(const sp<OverlayRef>& overlayRef);

    /* destroys this overlay */
    void destroy();
    
    /* get the HAL handle for this overlay */
    overlay_handle_t getHandleRef() const;

    /* blocks until an overlay buffer is available and return that buffer. */
    status_t dequeueBuffer(overlay_buffer_t* buffer);

    /* release the overlay buffer and post it */
    status_t queueBuffer(overlay_buffer_t buffer);

    /* change the width and height of the overlay */
    status_t resizeInput(uint32_t width, uint32_t height);

    status_t setCrop(uint32_t x, uint32_t y, uint32_t w, uint32_t h) ;

    status_t getCrop(uint32_t* x, uint32_t* y, uint32_t* w, uint32_t* h) ;

    /* set the buffer attributes */
    status_t setParameter(int param, int value);

    /* returns the address of a given buffer if supported, NULL otherwise. */
    void* getBufferAddress(overlay_buffer_t buffer);

    /* get physical informations about the overlay */
    uint32_t getWidth() const;
    uint32_t getHeight() const;
    int32_t getFormat() const;
    int32_t getWidthStride() const;
    int32_t getHeightStride() const;
    int32_t getBufferCount() const;
    status_t getStatus() const;
    
private:
    virtual ~Overlay();

    sp<OverlayRef> mOverlayRef;
    overlay_data_device_t *mOverlayData;
    status_t mStatus;
};

// ----------------------------------------------------------------------------

}; // namespace android

#endif // ANDROID_OVERLAY_H
Loading