[-]
[+]
|
Changed |
_service:tar_git:libhybris.changes
|
|
[-]
[+]
|
Changed |
_service:tar_git:libhybris.spec
^
|
|
[-]
[+]
|
Changed |
_service
^
|
@@ -2,7 +2,7 @@
<service name="tar_git">
<param name="url">https://github.com/mer-hybris/libhybris.git</param>
<param name="branch">master</param>
- <param name="revision">5a0019d067f010e341ef22f80b472e4c6fe5d972</param>
+ <param name="revision">e535e090f8a3897c9d4563fbfd4e4b0b8381e4b0</param>
<param name="token"/>
<param name="debian">N</param>
<param name="dumb">N</param>
|
[-]
[+]
|
Changed |
_service:tar_git:libhybris-0.0.5.32.tar.bz2/libhybris/compat/hwc2/Android.mk
^
|
@@ -12,8 +12,15 @@
LOCAL_C_INCLUDES := ../hybris/include
+ifeq ($(strip $(ANDROID_VERSION_MAJOR)),9)
+LOCAL_C_INCLUDES += \
+ hardware/interfaces/graphics/composer/2.1/utils/command-buffer/include
+LOCAL_HEADER_LIBRARIES : \
+ android.hardware.graphics.composer@2.1-command-buffer
+else
LOCAL_STATIC_LIBRARIES := \
libhwcomposer-command-buffer
+endif
LOCAL_SHARED_LIBRARIES := \
android.frameworks.vr.composer@1.0 \
|
[-]
[+]
|
Changed |
_service:tar_git:libhybris-0.0.5.32.tar.bz2/libhybris/compat/hwc2/ComposerHal.h
^
|
@@ -26,7 +26,11 @@
#include <android/frameworks/vr/composer/1.0/IVrComposerClient.h>
#include <android/hardware/graphics/composer/2.1/IComposer.h>
#include <utils/StrongPointer.h>
+#if ANDROID_VERSION_MAJOR >= 9
+#include <composer-command-buffer/2.1/ComposerCommandBuffer.h>
+#else
#include <IComposerCommandBuffer.h>
+#endif
namespace android {
|
[-]
[+]
|
Changed |
_service:tar_git:libhybris-0.0.5.32.tar.bz2/libhybris/compat/hwc2/HWC2.cpp
^
|
@@ -26,6 +26,9 @@
#include <ui/Fence.h>
#include <ui/FloatRect.h>
#include <ui/GraphicBuffer.h>
+#if ANDROID_VERSION_MAJOR >= 9
+#include <ui/GraphicTypes.h>
+#endif
#include <ui/Region.h>
#include <android/configuration.h>
@@ -471,10 +474,17 @@
&maxLuminance, &maxAverageLuminance, &minLuminance);
auto error = static_cast<HWC2::Error>(intError);
+#if ANDROID_VERSION_MAJOR >= 9
+ std::vector<android::ui::Hdr> types;
+ for (auto type : intTypes) {
+ types.push_back(static_cast<android::ui::Hdr>(type));
+ }
+#else
std::vector<int32_t> types;
for (auto type : intTypes) {
types.push_back(static_cast<int32_t>(type));
}
+#endif
numTypes = types.size();
if (error != Error::None) {
return error;
|
[-]
[+]
|
Changed |
_service:tar_git:libhybris-0.0.5.32.tar.bz2/libhybris/compat/hwc2/hwc2_compatibility_layer.cpp
^
|
@@ -178,7 +178,8 @@
if (!layer)
return nullptr;
- display->self->createLayer(&layer->self);
+ if (display->self->createLayer(&layer->self) != HWC2::Error::None)
+ return nullptr;
return layer;
}
@@ -186,9 +187,9 @@
void hwc2_compat_display_destroy_layer(hwc2_compat_display_t* display,
hwc2_compat_layer_t* layer)
{
- display->self->destroyLayer(layer->self);
+ if (display->self->destroyLayer(layer->self) != HWC2::Error::None)
+ delete layer->self;
- delete layer->self;
free(layer);
}
|
[-]
[+]
|
Changed |
_service:tar_git:libhybris-0.0.5.32.tar.bz2/libhybris/hybris/common/hooks.c
^
|
@@ -65,6 +65,7 @@
#include <sys/syscall.h>
#include <sys/auxv.h>
#include <sys/prctl.h>
+#include <sys/uio.h>
#include <sys/mman.h>
#include <libgen.h>
@@ -2630,7 +2631,7 @@
HOOK_INDIRECT(malloc),
HOOK_INDIRECT(free),
HOOK_DIRECT_NO_DEBUG(calloc),
- HOOK_DIRECT_NO_DEBUG(cfree),
+ HOOK_DIRECT_NO_DEBUG(free),
HOOK_DIRECT_NO_DEBUG(realloc),
HOOK_DIRECT_NO_DEBUG(memalign),
HOOK_DIRECT_NO_DEBUG(valloc),
|
[-]
[+]
|
Changed |
_service:tar_git:libhybris-0.0.5.32.tar.bz2/libhybris/hybris/common/n/linker.cpp
^
|
@@ -181,33 +181,51 @@
#if defined(__LP64__)
static const char* const kSystemLibDir = "/system/lib64";
static const char* const kVendorLibDir = "/vendor/lib64";
+static const char* const kVendorLibEglDir = "/vendor/lib64/egl";
static const char* const kOdmLibDir = "/odm/lib64";
+static const char* const kOdmLibEglDir = "/odm/lib64/egl";
static const char* const kAsanSystemLibDir = "/data/lib64";
static const char* const kAsanVendorLibDir = "/data/vendor/lib64";
+static const char* const kAsanVendorLibEglDir = "/data/vendor/lib64/egl";
static const char* const kAsanOdmLibDir = "/data/odm/lib64";
+static const char* const kAsanOdmLibEglDir = "/data/odm/lib64/egl";
#else
static const char* const kSystemLibDir = "/system/lib";
static const char* const kVendorLibDir = "/vendor/lib";
+static const char* const kVendorLibEglDir = "/vendor/lib/egl";
static const char* const kOdmLibDir = "/odm/lib";
+static const char* const kOdmLibEglDir = "/odm/lib/egl";
static const char* const kAsanSystemLibDir = "/data/lib";
static const char* const kAsanVendorLibDir = "/data/vendor/lib";
+static const char* const kAsanVendorLibEglDir = "/data/vendor/lib/egl";
static const char* const kAsanOdmLibDir = "/data/odm/lib";
+static const char* const kAsanOdmLibEglDir = "/data/odm/lib/egl";
#endif
static const char* const kDefaultLdPaths[] = {
kSystemLibDir,
- kVendorLibDir,
kOdmLibDir,
+ kVendorLibDir,
+
+ // libhybris support:
+ kVendorLibEglDir,
+ kOdmLibEglDir,
nullptr
};
static const char* const kAsanDefaultLdPaths[] = {
kAsanSystemLibDir,
kSystemLibDir,
- kAsanVendorLibDir,
- kVendorLibDir,
kAsanOdmLibDir,
kOdmLibDir,
+ kAsanVendorLibDir,
+ kVendorLibDir,
+
+ // libhybris support:
+ kAsanOdmLibEglDir,
+ kOdmLibEglDir,
+ kAsanVendorLibEglDir,
+ kVendorLibEglDir,
nullptr
};
|
[-]
[+]
|
Changed |
_service:tar_git:libhybris-0.0.5.32.tar.bz2/libhybris/hybris/common/o/linker.cpp
^
|
@@ -107,35 +107,52 @@
#if defined(__LP64__)
static const char* const kSystemLibDir = "/system/lib64";
static const char* const kVendorLibDir = "/vendor/lib64";
+static const char* const kVendorLibEglDir = "/vendor/lib64/egl";
static const char* const kOdmLibDir = "/odm/lib64";
+static const char* const kOdmLibEglDir = "/odm/lib64/egl";
static const char* const kAsanSystemLibDir = "/data/asan/system/lib64";
static const char* const kAsanVendorLibDir = "/data/asan/vendor/lib64";
+static const char* const kAsanVendorLibEglDir = "/data/asan/vendor/lib64/egl";
static const char* const kAsanOdmLibDir = "/data/asan/odm/lib64";
+static const char* const kAsanOdmLibEglDir = "/data/asan/odm/lib64/egl";
#else
static const char* const kSystemLibDir = "/system/lib";
static const char* const kVendorLibDir = "/vendor/lib";
+static const char* const kVendorLibEglDir = "/vendor/lib/egl";
static const char* const kOdmLibDir = "/odm/lib";
+static const char* const kOdmLibEglDir = "/odm/lib/egl";
static const char* const kAsanSystemLibDir = "/data/asan/system/lib";
static const char* const kAsanVendorLibDir = "/data/asan/vendor/lib";
+static const char* const kAsanVendorLibEglDir = "/data/asan/vendor/lib/egl";
static const char* const kAsanOdmLibDir = "/data/asan/odm/lib";
+static const char* const kAsanOdmLibEglDir = "/data/asan/odm/lib/egl";
#endif
static const char* const kAsanLibDirPrefix = "/data/asan";
static const char* const kDefaultLdPaths[] = {
kSystemLibDir,
- kVendorLibDir,
kOdmLibDir,
+ kVendorLibDir,
+
+ kOdmLibEglDir,
+ kVendorLibEglDir,
nullptr
};
static const char* const kAsanDefaultLdPaths[] = {
kAsanSystemLibDir,
kSystemLibDir,
- kAsanVendorLibDir,
- kVendorLibDir,
kAsanOdmLibDir,
kOdmLibDir,
+ kAsanVendorLibDir,
+ kVendorLibDir,
+
+ // libhybris support:
+ kAsanOdmLibEglDir,
+ kOdmLibEglDir,
+ kAsanVendorLibEglDir,
+ kVendorLibEglDir,
nullptr
};
|
[-]
[+]
|
Changed |
_service:tar_git:libhybris-0.0.5.32.tar.bz2/libhybris/hybris/tests/Makefile.am
^
|
@@ -140,13 +140,14 @@
test_camera_CFLAGS = \
-I$(top_srcdir)/include \
$(ANDROID_HEADERS_CFLAGS)
-
test_camera_LDADD = \
$(top_builddir)/common/libhybris-common.la \
$(top_builddir)/egl/libEGL.la \
$(top_builddir)/glesv2/libGLESv2.la \
$(top_builddir)/camera/libcamera.la \
- $(top_builddir)/input/libis.la
+ $(top_builddir)/input/libis.la \
+ $(top_builddir)/egl/platforms/common/libwayland-egl.la \
+ $(WAYLAND_CLIENT_LIBS)
test_media_SOURCES = test_media.c
test_media_CFLAGS = \
|
[-]
[+]
|
Changed |
_service:tar_git:libhybris-0.0.5.32.tar.bz2/libhybris/hybris/tests/test_camera.c
^
|
@@ -17,6 +17,11 @@
#include "config.h"
+#include <wayland-client.h>
+#include <wayland-server.h>
+#include <wayland-client-protocol.h>
+#include <wayland-egl.h>
+
#include <hybris/camera/camera_compatibility_layer.h>
#include <hybris/camera/camera_compatibility_layer_capabilities.h>
@@ -286,6 +291,70 @@
return program;
}
+struct wl_display *wldisplay = NULL;
+struct wl_compositor *wlcompositor = NULL;
+struct wl_surface *wlsurface;
+struct wl_egl_window *wlegl_window;
+struct wl_region *wlregion;
+struct wl_shell *wlshell;
+struct wl_shell_surface *wlshell_surface;
+
+static void global_registry_handler(void *data, struct wl_registry *registry, uint32_t id, const char *interface, uint32_t version)
+{
+ printf("Got a registry event for %s id %d\n", interface, id);
+ if (strcmp(interface, "wl_compositor") == 0) {
+ wlcompositor = wl_registry_bind(registry,
+ id,
+ &wl_compositor_interface,
+ 1);
+ } else if (strcmp(interface, "wl_shell") == 0) {
+ wlshell = wl_registry_bind(registry, id,
+ &wl_shell_interface, 1);
+ }
+}
+
+static void global_registry_remover(void *data, struct wl_registry *registry, uint32_t id)
+{
+ printf("Got a registry losing event for %d\n", id);
+}
+
+static const struct wl_registry_listener registry_listener = {
+ global_registry_handler,
+ global_registry_remover
+};
+
+static void get_server_references(void)
+{
+ wldisplay = wl_display_connect(NULL);
+ if (wldisplay == NULL) {
+ fprintf(stderr, "Can't connect to display\n");
+ exit(1);
+ }
+ printf("connected to display\n");
+
+ struct wl_registry *registry = wl_display_get_registry(wldisplay);
+ wl_registry_add_listener(registry, ®istry_listener, NULL);
+
+ wl_display_dispatch(wldisplay);
+ wl_display_roundtrip(wldisplay);
+
+ if (wlcompositor == NULL || wlshell == NULL) {
+ fprintf(stderr, "Can't find compositor or shell\n");
+ exit(1);
+ } else {
+ fprintf(stderr, "Found compositor and shell\n");
+ }
+}
+
+static void create_opaque_region()
+{
+ wlregion = wl_compositor_create_region(wlcompositor);
+ wl_region_add(wlregion, 0, 0,
+ 1024,
+ 1024);
+ wl_surface_set_opaque_region(wlsurface, wlregion);
+}
+
int main(int argc, char** argv)
{
struct CameraControlListener listener;
@@ -356,6 +425,22 @@
FocusRegion fr = { top: -200, left: -200, bottom: 200, right: 200, weight: 300};
android_camera_set_focus_region(cc, &fr);
+ /* Wayland Setup */
+ get_server_references();
+
+ wlsurface = wl_compositor_create_surface(wlcompositor);
+ if (wlsurface == NULL) {
+ fprintf(stderr, "Can't create surface\n");
+ exit(1);
+ } else {
+ fprintf(stderr, "Created surface\n");
+ }
+
+ wlshell_surface = wl_shell_get_shell_surface(wlshell, wlsurface);
+ wl_shell_surface_set_toplevel(wlshell_surface);
+
+ create_opaque_region();
+
/* EGL Setup */
EGLConfig ecfg;
EGLBoolean rv;
@@ -372,7 +457,7 @@
EGL_NONE
};
- EGLDisplay disp = eglGetDisplay(NULL);
+ EGLDisplay disp = eglGetDisplay((EGLNativeDisplayType)wldisplay);
assert(eglGetError() == EGL_SUCCESS);
assert(disp != EGL_NO_DISPLAY);
@@ -384,8 +469,16 @@
assert(eglGetError() == EGL_SUCCESS);
assert(rv == EGL_TRUE);
+ wlegl_window = wl_egl_window_create(wlsurface, 1024, 1024);
+ if (wlegl_window == EGL_NO_SURFACE) {
+ fprintf(stderr, "Can't create egl window\n");
+ exit(1);
+ } else {
+ fprintf(stderr, "Created egl window\n");
+ }
+
EGLSurface surface = eglCreateWindowSurface((EGLDisplay) disp, ecfg,
- (EGLNativeWindowType) NULL, NULL);
+ (EGLNativeWindowType) wlegl_window, NULL);
assert(eglGetError() == EGL_SUCCESS);
assert(surface != EGL_NO_SURFACE);
@@ -473,5 +566,9 @@
glDisableVertexAttribArray(gaTexHandle);
eglSwapBuffers((EGLDisplay) disp, surface);
+
+ wl_display_dispatch(wldisplay);
}
+
+ wl_display_disconnect(wldisplay);
}
|
[-]
[+]
|
Changed |
_service:tar_git:libhybris-0.0.5.32.tar.bz2/libhybris/hybris/tests/test_sensors.c
^
|
@@ -48,17 +48,30 @@
}
}
+void float_to_char(float f,char * buffer, int maxChars){
+ int beforeDot = (int)f;
+ int afterDot = (int)((f-beforeDot)*1e6); /* rounding is not perfect, but that'll do */
+ snprintf(buffer, maxChars, "%d.%d", beforeDot, afterDot);
+}
+
static void print_sensor_info(int i, struct sensor_t const *s)
{
+ char numStr[32];
+
printf("=== Sensor %d ==\n", i);
printf("Name: %s\n", s->name);
printf("Vendor: %s\n", s->vendor);
printf("Version: 0x%x\n", s->version);
printf("Handle: 0x%x\n", s->handle);
printf("Type: %d\n", s->type);
- printf("maxRange: %.f\n", s->maxRange);
- printf("resolution: %.f\n", s->resolution);
- printf("power: %.f mA\n", s->power);
+ // once the hw module is loaded, printf with %f will crash, so use integers
+ float_to_char(s->maxRange, numStr, 30);
+ printf("maxRange: %s\n", numStr);
+ float_to_char(s->resolution, numStr, 30);
+ printf("resolution: %s\n", numStr);
+ float_to_char(s->power, numStr, 30);
+ printf("power: %s mA\n", numStr);
+
printf("minDelay: %d\n", s->minDelay);
//printf("fifoReservedEventCount: %d\n", s->fifoReservedEventCount);
//printf("fifoMaxEventCount: %d\n", s->fifoMaxEventCount);
|