Commit d87f1620 authored by Mathias Agopian's avatar Mathias Agopian
Browse files

merge libsurfaceflinger_client into libgui

this is the first step in unifying surfacetexture and surface.
for this reason the header files were not moved, as most of them
will eventually go away.

NOTE: currently we keep libsurfaceflinger_client.so as an empty
library to workaround prebuilt binaries wrongly linking against
it.

Change-Id: I130f0de2428e8579033dc41394d093f4e1431a00
parent d3f9a53b
......@@ -10,7 +10,15 @@ LOCAL_SRC_FILES:= \
SensorEventQueue.cpp \
SensorManager.cpp \
SurfaceTexture.cpp \
SurfaceTextureClient.cpp
SurfaceTextureClient.cpp \
ISurfaceComposer.cpp \
ISurface.cpp \
ISurfaceComposerClient.cpp \
IGraphicBufferAlloc.cpp \
LayerState.cpp \
SharedBufferStack.cpp \
Surface.cpp \
SurfaceComposerClient.cpp \
LOCAL_SHARED_LIBRARIES := \
libcutils \
......@@ -21,7 +29,6 @@ LOCAL_SHARED_LIBRARIES := \
libui \
libEGL \
libGLESv2 \
libsurfaceflinger_client
LOCAL_MODULE:= libgui
......
......@@ -9,6 +9,7 @@ LOCAL_MODULE := SurfaceTexture_test
LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := \
Surface_test.cpp \
SurfaceTextureClient_test.cpp \
SurfaceTexture_test.cpp \
......@@ -20,7 +21,6 @@ LOCAL_SHARED_LIBRARIES := \
libcutils \
libgui \
libstlport \
libsurfaceflinger_client \
libui \
libutils \
......
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
ISurfaceComposer.cpp \
ISurface.cpp \
ISurfaceComposerClient.cpp \
IGraphicBufferAlloc.cpp \
LayerState.cpp \
SharedBufferStack.cpp \
Surface.cpp \
SurfaceComposerClient.cpp
LOCAL_SRC_FILES:=
LOCAL_SHARED_LIBRARIES := \
libcutils \
libutils \
libbinder \
libhardware \
libui
LOCAL_SHARED_LIBRARIES :=
LOCAL_MODULE:= libsurfaceflinger_client
......
# Build the unit tests.
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
ifneq ($(TARGET_SIMULATOR),true)
# Build the unit tests.
test_src_files := \
Surface_test.cpp \
shared_libraries := \
libcutils \
libutils \
libbinder \
libsurfaceflinger_client \
libstlport \
static_libraries := \
libgtest \
libgtest_main \
c_includes := \
bionic \
bionic/libstdc++/include \
external/gtest/include \
external/stlport/stlport \
module_tags := tests
$(foreach file,$(test_src_files), \
$(eval include $(CLEAR_VARS)) \
$(eval LOCAL_SHARED_LIBRARIES := $(shared_libraries)) \
$(eval LOCAL_STATIC_LIBRARIES := $(static_libraries)) \
$(eval LOCAL_C_INCLUDES := $(c_includes)) \
$(eval LOCAL_SRC_FILES := $(file)) \
$(eval LOCAL_MODULE := $(notdir $(file:%.cpp=%))) \
$(eval LOCAL_MODULE_TAGS := $(module_tags)) \
$(eval include $(BUILD_EXECUTABLE)) \
)
# Build the manual test programs.
include $(call all-subdir-makefiles)
endif
# Include subdirectory makefiles
# ============================================================
# If we're building with ONE_SHOT_MAKEFILE (mm, mmm), then what the framework
# team really wants is to build the stuff defined by this makefile.
ifeq (,$(ONE_SHOT_MAKEFILE))
include $(call first-makefiles-under,$(LOCAL_PATH))
endif
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
SharedBufferStackTest.cpp
LOCAL_SHARED_LIBRARIES := \
libcutils \
libutils \
libui \
libsurfaceflinger_client
LOCAL_MODULE:= test-sharedbufferstack
LOCAL_MODULE_TAGS := tests
include $(BUILD_EXECUTABLE)
/*
* 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.
*/
#undef NDEBUG
#include <assert.h>
#include <cutils/memory.h>
#include <cutils/log.h>
#include <utils/Errors.h>
#include <private/surfaceflinger/SharedBufferStack.h>
using namespace android;
void log(const char* prefix, int *b, size_t num);
void test0(SharedBufferServer& s, SharedBufferClient& c, size_t num, int* list);
// ----------------------------------------------------------------------------
int main(int argc, char** argv)
{
SharedClient client;
sp<SharedBufferServer> ps(new SharedBufferServer(&client, 0, 4, 0));
SharedBufferServer& s(*ps);
SharedBufferClient c(&client, 0, 4, 0);
printf("basic test 0\n");
int list0[4] = {0, 1, 2, 3};
test0(s, c, 4, list0);
printf("basic test 1\n");
int list1[4] = {2, 1, 0, 3};
test0(s, c, 4, list1);
int b = c.dequeue();
c.lock(b);
c.queue(b);
s.retireAndLock();
printf("basic test 2\n");
int list2[4] = {1, 2, 3, 0};
test0(s, c, 4, list2);
printf("resize test\n");
class SetBufferCountIPC : public SharedBufferClient::SetBufferCountCallback {
SharedBufferServer& s;
virtual status_t operator()(int bufferCount) const {
return s.resize(bufferCount);
}
public:
SetBufferCountIPC(SharedBufferServer& s) : s(s) { }
} resize(s);
c.setBufferCount(6, resize);
int list3[6] = {3, 2, 1, 4, 5, 0};
test0(s, c, 6, list3);
c.setBufferCount(4, resize);
int list4[4] = {1, 2, 3, 0};
test0(s, c, 4, list4);
return 0;
}
void log(const char* prefix, int *b, size_t num)
{
printf("%s: ", prefix);
for (size_t i=0 ; i<num ; i++) {
printf("%d ", b[i]);
}
printf("\n");
}
// ----------------------------------------------------------------------------
void test0(
SharedBufferServer& s,
SharedBufferClient& c,
size_t num,
int* list)
{
status_t err;
int b[num], u[num], r[num];
for (size_t i=0 ; i<num ; i++) {
b[i] = c.dequeue();
assert(b[i]==list[i]);
}
log("DQ", b, num);
for (size_t i=0 ; i<num-1 ; i++) {
err = c.lock(b[i]);
assert(err==0);
}
log("LK", b, num-1);
for (size_t i=0 ; i<num-1 ; i++) {
err = c.queue(b[i]);
assert(err==0);
}
log(" Q", b, num-1);
for (size_t i=0 ; i<num-1 ; i++) {
r[i] = s.retireAndLock();
assert(r[i]==list[i]);
err = s.unlock(r[i]);
assert(err == 0);
}
log("RT", r, num-1);
err = c.lock(b[num-1]);
assert(err == 0);
log("LK", b+num-1, 1);
err = c.queue(b[num-1]);
assert(err == 0);
log(" Q", b+num-1, 1);
r[num-1] = s.retireAndLock();
assert(r[num-1]==list[num-1]);
err = s.unlock(r[num-1]);
assert(err == 0);
log("RT", r+num-1, 1);
// ------------------------------------
printf("\n");
for (size_t i=0 ; i<num ; i++) {
b[i] = c.dequeue();
assert(b[i]==list[i]);
}
log("DQ", b, num);
for (size_t i=0 ; i<num-1 ; i++) {
err = c.lock(b[i]);
assert(err==0);
}
log("LK", b, num-1);
for (size_t i=0 ; i<num-1 ; i++) {
u[i] = b[num-2-i];
}
u[num-1] = b[num-1];
for (size_t i=0 ; i<num-1 ; i++) {
err = c.queue(u[i]);
assert(err==0);
}
log(" Q", u, num-1);
for (size_t i=0 ; i<num-1 ; i++) {
r[i] = s.retireAndLock();
assert(r[i]==u[i]);
err = s.unlock(r[i]);
assert(err == 0);
}
log("RT", r, num-1);
err = c.lock(b[num-1]);
assert(err == 0);
log("LK", b+num-1, 1);
err = c.queue(b[num-1]);
assert(err == 0);
log(" Q", b+num-1, 1);
r[num-1] = s.retireAndLock();
assert(r[num-1]==list[num-1]);
err = s.unlock(r[num-1]);
assert(err == 0);
log("RT", r+num-1, 1);
// ------------------------------------
printf("\n");
for (size_t i=0 ; i<num ; i++) {
b[i] = c.dequeue();
assert(b[i]==u[i]);
}
log("DQ", b, num);
for (size_t i=0 ; i<num-1 ; i++) {
err = c.lock(b[i]);
assert(err==0);
}
log("LK", b, num-1);
for (size_t i=0 ; i<num-1 ; i++) {
err = c.queue(b[i]);
assert(err==0);
}
log(" Q", b, num-1);
for (size_t i=0 ; i<num-1 ; i++) {
r[i] = s.retireAndLock();
assert(r[i]==u[i]);
err = s.unlock(r[i]);
assert(err == 0);
}
log("RT", r, num-1);
err = c.lock(u[num-1]);
assert(err == 0);
log("LK", u+num-1, 1);
err = c.queue(u[num-1]);
assert(err == 0);
log(" Q", u+num-1, 1);
r[num-1] = s.retireAndLock();
assert(r[num-1]==u[num-1]);
err = s.unlock(r[num-1]);
assert(err == 0);
log("RT", r+num-1, 1);
// ------------------------------------
printf("\n");
b[0] = c.dequeue();
assert(b[0]==u[0]);
log("DQ", b, 1);
c.undoDequeue(b[0]);
assert(err == 0);
log("UDQ", b, 1);
// ------------------------------------
printf("\n");
for (size_t i=0 ; i<num ; i++) {
b[i] = c.dequeue();
assert(b[i]==u[i]);
}
log("DQ", b, num);
for (size_t i=0 ; i<num-1 ; i++) {
err = c.lock(b[i]);
assert(err==0);
}
log("LK", b, num-1);
for (size_t i=0 ; i<num-1 ; i++) {
err = c.queue(b[i]);
assert(err==0);
}
log(" Q", b, num-1);
for (size_t i=0 ; i<num-1 ; i++) {
r[i] = s.retireAndLock();
assert(r[i]==u[i]);
err = s.unlock(r[i]);
assert(err == 0);
}
log("RT", r, num-1);
err = c.lock(u[num-1]);
assert(err == 0);
log("LK", u+num-1, 1);
err = c.queue(u[num-1]);
assert(err == 0);
log(" Q", u+num-1, 1);
r[num-1] = s.retireAndLock();
assert(r[num-1]==u[num-1]);
err = s.unlock(r[num-1]);
assert(err == 0);
log("RT", r+num-1, 1);
printf("\n");
}
......@@ -41,7 +41,7 @@ LOCAL_SHARED_LIBRARIES := \
libGLESv1_CM \
libbinder \
libui \
libsurfaceflinger_client
libgui
LOCAL_C_INCLUDES := \
$(call include-path-for, corecg graphics)
......
......@@ -8,7 +8,7 @@ LOCAL_SHARED_LIBRARIES := \
libcutils \
libutils \
libui \
libsurfaceflinger_client
libgui
LOCAL_MODULE:= test-resize
......
......@@ -10,7 +10,7 @@ LOCAL_SHARED_LIBRARIES := \
libbinder \
libskia \
libui \
libsurfaceflinger_client
libgui
LOCAL_MODULE:= test-screencap
......
......@@ -9,7 +9,7 @@ LOCAL_SHARED_LIBRARIES := \
libutils \
libbinder \
libui \
libsurfaceflinger_client
libgui
LOCAL_MODULE:= test-surface
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment