summaryrefslogtreecommitdiff
path: root/libs/ui/ISurface.cpp
diff options
context:
space:
mode:
author Mathias Agopian <mathias@google.com> 2009-04-10 14:24:30 -0700
committer Mathias Agopian <mathias@google.com> 2009-04-10 14:24:30 -0700
commit076b1cc3a9b90aa5b381a1ed268ca0b548444c9b (patch)
treeb87f7863623b37fa9a6cc4ef48934aab46f79986 /libs/ui/ISurface.cpp
parent4ec21527096d0dcaa99634e6058aca3a415461af (diff)
Integrate from //sandbox/mathias/donut/...@145728
SurfaceFlinger rework for new EGL driver model support.
Diffstat (limited to 'libs/ui/ISurface.cpp')
-rw-r--r--libs/ui/ISurface.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/libs/ui/ISurface.cpp b/libs/ui/ISurface.cpp
index d5e9f812a4..fcea8ec701 100644
--- a/libs/ui/ISurface.cpp
+++ b/libs/ui/ISurface.cpp
@@ -14,6 +14,8 @@
* limitations under the License.
*/
+#define LOG_TAG "ISurface"
+
#include <stdio.h>
#include <stdint.h>
#include <sys/types.h>
@@ -23,10 +25,13 @@
#include <ui/ISurface.h>
#include <ui/Overlay.h>
+#include <ui/Surface.h>
namespace android {
+// ----------------------------------------------------------------------
+
ISurface::BufferHeap::BufferHeap()
: w(0), h(0), hor_stride(0), ver_stride(0), format(0),
transform(0), flags(0)
@@ -55,6 +60,8 @@ ISurface::BufferHeap::~BufferHeap()
{
}
+// ----------------------------------------------------------------------
+
class BpSurface : public BpInterface<ISurface>
{
public:
@@ -63,6 +70,15 @@ public:
{
}
+ virtual sp<SurfaceBuffer> getBuffer()
+ {
+ Parcel data, reply;
+ data.writeInterfaceToken(ISurface::getInterfaceDescriptor());
+ remote()->transact(GET_BUFFER, data, &reply);
+ sp<SurfaceBuffer> buffer = new SurfaceBuffer(reply);
+ return buffer;
+ }
+
virtual status_t registerBuffers(const BufferHeap& buffers)
{
Parcel data, reply;
@@ -122,6 +138,11 @@ status_t BnSurface::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
switch(code) {
+ case GET_BUFFER: {
+ CHECK_INTERFACE(ISurface, data, reply);
+ sp<SurfaceBuffer> buffer(getBuffer());
+ return SurfaceBuffer::writeToParcel(reply, buffer.get());
+ }
case REGISTER_BUFFERS: {
CHECK_INTERFACE(ISurface, data, reply);
BufferHeap buffer;