diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/camera/Android.mk | 12 | ||||
-rw-r--r-- | libs/camera/CameraParameters.cpp | 64 | ||||
-rw-r--r-- | libs/surfaceflinger/Android.mk | 8 | ||||
-rw-r--r-- | libs/surfaceflinger/Layer.cpp | 12 | ||||
-rw-r--r-- | libs/surfaceflinger/LayerBase.cpp | 42 | ||||
-rw-r--r-- | libs/surfaceflinger/SurfaceFlinger.cpp | 15 | ||||
-rw-r--r-- | libs/surfaceflinger/SurfaceFlinger.h | 5 | ||||
-rw-r--r-- | libs/surfaceflinger_client/Android.mk | 11 | ||||
-rw-r--r-- | libs/ui/Android.mk | 21 | ||||
-rw-r--r-- | libs/ui/EventHub.cpp | 5 | ||||
-rw-r--r-- | libs/ui/Overlay.cpp | 7 | ||||
-rw-r--r-- | libs/utils/ResourceTypes.cpp | 2 |
12 files changed, 189 insertions, 15 deletions
diff --git a/libs/camera/Android.mk b/libs/camera/Android.mk index 03ff229..3691bde 100644 --- a/libs/camera/Android.mk +++ b/libs/camera/Android.mk @@ -8,6 +8,10 @@ LOCAL_SRC_FILES:= \ ICameraClient.cpp \ ICameraService.cpp +LOCAL_MODULE:= libcamera_client + +ifneq ($(BOARD_USES_ECLAIR_LIBCAMERA),true) + LOCAL_SHARED_LIBRARIES := \ libcutils \ libutils \ @@ -16,10 +20,14 @@ LOCAL_SHARED_LIBRARIES := \ libsurfaceflinger_client \ libui -LOCAL_MODULE:= libcamera_client - ifeq ($(TARGET_SIMULATOR),true) LOCAL_LDLIBS += -lpthread endif include $(BUILD_SHARED_LIBRARY) + +else + +include $(BUILD_STATIC_LIBRARY) + +endif diff --git a/libs/camera/CameraParameters.cpp b/libs/camera/CameraParameters.cpp index 65fd7ac..2458213 100644 --- a/libs/camera/CameraParameters.cpp +++ b/libs/camera/CameraParameters.cpp @@ -130,6 +130,8 @@ const char CameraParameters::PIXEL_FORMAT_YUV420SP[] = "yuv420sp"; const char CameraParameters::PIXEL_FORMAT_YUV422I[] = "yuv422i-yuyv"; const char CameraParameters::PIXEL_FORMAT_RGB565[] = "rgb565"; const char CameraParameters::PIXEL_FORMAT_JPEG[] = "jpeg"; +const char CameraParameters::PIXEL_FORMAT_RAW[] = "raw"; + // Values for focus mode settings. const char CameraParameters::FOCUS_MODE_AUTO[] = "auto"; @@ -137,6 +139,51 @@ const char CameraParameters::FOCUS_MODE_INFINITY[] = "infinity"; const char CameraParameters::FOCUS_MODE_MACRO[] = "macro"; const char CameraParameters::FOCUS_MODE_FIXED[] = "fixed"; const char CameraParameters::FOCUS_MODE_EDOF[] = "edof"; +const char CameraParameters::FOCUS_MODE_NORMAL[] = "normal"; + + +const char CameraParameters::KEY_SUPPORTED_THUMBNAIL_SIZES[] = "jpeg-thumbnail-size-values"; +const char CameraParameters::KEY_GPS_LATITUDE_REF[] = "gps-latitude-ref"; +const char CameraParameters::KEY_GPS_LONGITUDE_REF[] = "gps-longitude-ref"; +const char CameraParameters::KEY_GPS_ALTITUDE_REF[] = "gps-altitude-ref"; +const char CameraParameters::KEY_GPS_STATUS[] = "gps-status"; +const char CameraParameters::KEY_EXIF_DATETIME[] = "exif-datetime"; + +const char CameraParameters::KEY_AUTO_EXPOSURE[] = "auto-exposure"; +const char CameraParameters::KEY_SUPPORTED_AUTO_EXPOSURE[] = "auto-exposure-values"; + +const char CameraParameters::KEY_ISO_MODE[] = "iso"; +const char CameraParameters::KEY_SUPPORTED_ISO_MODES[] = "iso-values"; +const char CameraParameters::KEY_LENSSHADE[] = "lensshade"; +const char CameraParameters::KEY_SUPPORTED_LENSSHADE_MODES[] = "lensshade-values"; +const char CameraParameters::KEY_SHARPNESS[] = "sharpness"; +const char CameraParameters::KEY_MAX_SHARPNESS[] = "max-sharpness"; +const char CameraParameters::KEY_CONTRAST[] = "contrast"; +const char CameraParameters::KEY_MAX_CONTRAST[] = "max-contrast"; +const char CameraParameters::KEY_SATURATION[] = "saturation"; +const char CameraParameters::KEY_MAX_SATURATION[] = "max-saturation"; + + +// Values for auto exposure settings. +const char CameraParameters::AUTO_EXPOSURE_FRAME_AVG[] = "frame-average"; +const char CameraParameters::AUTO_EXPOSURE_CENTER_WEIGHTED[] = "center-weighted"; +const char CameraParameters::AUTO_EXPOSURE_SPOT_METERING[] = "spot-metering"; + + // Values for ISO Settings +const char CameraParameters::ISO_AUTO[] = "auto"; +const char CameraParameters::ISO_HJR[] = "ISO_HJR"; +const char CameraParameters::ISO_100[] = "ISO100"; +const char CameraParameters::ISO_200[] = "ISO200"; +const char CameraParameters::ISO_400[] = "ISO400"; +const char CameraParameters::ISO_800[] = "ISO800"; +const char CameraParameters::ISO_1600[] = "ISO1600"; + + //Values for Lens Shading +const char CameraParameters::LENSSHADE_ENABLE[] = "enable"; +const char CameraParameters::LENSSHADE_DISABLE[] = "disable"; + +static const char* portrait = "portrait"; +static const char* landscape = "landscape"; CameraParameters::CameraParameters() : mMap() @@ -315,6 +362,23 @@ void CameraParameters::setPreviewFormat(const char *format) set(KEY_PREVIEW_FORMAT, format); } +int CameraParameters::getOrientation() const +{ + const char* orientation = get("orientation"); + if (orientation && !strcmp(orientation, portrait)) + return CAMERA_ORIENTATION_PORTRAIT; + return CAMERA_ORIENTATION_LANDSCAPE; +} + +void CameraParameters::setOrientation(int orientation) +{ + if (orientation == CAMERA_ORIENTATION_PORTRAIT) { + set("orientation", portrait); + } else { + set("orientation", landscape); + } +} + const char *CameraParameters::getPreviewFormat() const { return get(KEY_PREVIEW_FORMAT); diff --git a/libs/surfaceflinger/Android.mk b/libs/surfaceflinger/Android.mk index 86eb78d..bf74089 100644 --- a/libs/surfaceflinger/Android.mk +++ b/libs/surfaceflinger/Android.mk @@ -38,8 +38,12 @@ LOCAL_SHARED_LIBRARIES := \ libEGL \ libGLESv1_CM \ libbinder \ - libui \ - libsurfaceflinger_client + libui + +ifneq ($(BOARD_USES_ECLAIR_LIBCAMERA),true) + LOCAL_SHARED_LIBRARIES += \ + libsurfaceflinger_client +endif LOCAL_C_INCLUDES := \ $(call include-path-for, corecg graphics) diff --git a/libs/surfaceflinger/Layer.cpp b/libs/surfaceflinger/Layer.cpp index ce7e9aa..2c7b4af 100644 --- a/libs/surfaceflinger/Layer.cpp +++ b/libs/surfaceflinger/Layer.cpp @@ -133,10 +133,14 @@ status_t Layer::setBuffers( uint32_t w, uint32_t h, mNeedsBlending = (info.h_alpha - info.l_alpha) > 0; mNoEGLImageForSwBuffers = !(hwFlags & DisplayHardware::CACHED_BUFFERS); - // we use the red index - int displayRedSize = displayInfo.getSize(PixelFormatInfo::INDEX_RED); - int layerRedsize = info.getSize(PixelFormatInfo::INDEX_RED); - mNeedsDithering = layerRedsize > displayRedSize; + if (mFlinger->getUseDithering()) { + // we use the red index + int displayRedSize = displayInfo.getSize(PixelFormatInfo::INDEX_RED); + int layerRedsize = info.getSize(PixelFormatInfo::INDEX_RED); + mNeedsDithering = layerRedsize > displayRedSize; + } else { + mNeedsDithering = false; + } for (size_t i=0 ; i<NUM_BUFFERS ; i++) { mBuffers[i] = new GraphicBuffer(); diff --git a/libs/surfaceflinger/LayerBase.cpp b/libs/surfaceflinger/LayerBase.cpp index a8b735e..f78d140 100644 --- a/libs/surfaceflinger/LayerBase.cpp +++ b/libs/surfaceflinger/LayerBase.cpp @@ -33,6 +33,12 @@ #include "SurfaceFlinger.h" #include "DisplayHardware/DisplayHardware.h" +#define RENDER_EFFECT_NIGHT 1 +#define RENDER_EFFECT_TERMINAL 2 +#define RENDER_EFFECT_BLUE 3 +#define RENDER_EFFECT_AMBER 4 +#define RENDER_EFFECT_SALMON 5 +#define RENDER_EFFECT_FUSCIA 6 namespace android { @@ -401,7 +407,10 @@ void LayerBase::drawWithOpenGL(const Region& clip, const Texture& texture) const glEnable(GL_TEXTURE_2D); - if (UNLIKELY(s.alpha < 0xFF)) { + int renderEffect = mFlinger->getRenderEffect(); + bool noEffect = renderEffect == 0; + + if (UNLIKELY(s.alpha < 0xFF) && noEffect) { // We have an alpha-modulation. We need to modulate all // texture components by alpha because we're always using // premultiplied alpha. @@ -423,7 +432,7 @@ void LayerBase::drawWithOpenGL(const Region& clip, const Texture& texture) const glEnable(GL_BLEND); glBlendFunc(src, GL_ONE_MINUS_SRC_ALPHA); glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, env); - } else { + } else if (noEffect) { glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glColor4x(0x10000, 0x10000, 0x10000, 0x10000); if (needsBlending()) { @@ -433,6 +442,35 @@ void LayerBase::drawWithOpenGL(const Region& clip, const Texture& texture) const } else { glDisable(GL_BLEND); } + } else { + // Apply a render effect, which is simple color masks for now. + GLenum env, src; + env = GL_MODULATE; + src = mPremultipliedAlpha ? GL_ONE : GL_SRC_ALPHA; + const GGLfixed alpha = (s.alpha << 16)/255; + switch (renderEffect) { + case RENDER_EFFECT_NIGHT: + glColor4x(alpha, 0, 0, alpha); + break; + case RENDER_EFFECT_TERMINAL: + glColor4x(0, alpha, 0, alpha); + break; + case RENDER_EFFECT_BLUE: + glColor4x(0, 0, alpha, alpha); + break; + case RENDER_EFFECT_AMBER: + glColor4x(alpha, alpha*0.75, 0, alpha); + break; + case RENDER_EFFECT_SALMON: + glColor4x(alpha, alpha*0.5, alpha*0.5, alpha); + break; + case RENDER_EFFECT_FUSCIA: + glColor4x(alpha, 0, alpha*0.5, alpha); + break; + } + glEnable(GL_BLEND); + glBlendFunc(src, GL_ONE_MINUS_SRC_ALPHA); + glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, env); } Region::const_iterator it = clip.begin(); diff --git a/libs/surfaceflinger/SurfaceFlinger.cpp b/libs/surfaceflinger/SurfaceFlinger.cpp index 0722fda..b868cd1 100644 --- a/libs/surfaceflinger/SurfaceFlinger.cpp +++ b/libs/surfaceflinger/SurfaceFlinger.cpp @@ -184,13 +184,15 @@ SurfaceFlinger::SurfaceFlinger() mFreezeDisplayTime(0), mDebugRegion(0), mDebugBackground(0), + mRenderEffect(0), mDebugInSwapBuffers(0), mLastSwapBufferTime(0), mDebugInTransaction(0), mLastTransactionTime(0), mBootFinished(false), mConsoleSignals(0), - mSecureFrameBuffer(0) + mSecureFrameBuffer(0), + mUseDithering(true) { init(); } @@ -205,9 +207,14 @@ void SurfaceFlinger::init() mDebugRegion = atoi(value); property_get("debug.sf.showbackground", value, "0"); mDebugBackground = atoi(value); + property_get("debug.sf.render_effect", value, "0"); + mRenderEffect = atoi(value); + property_get("persist.sys.use_dithering", value, "1"); + mUseDithering = atoi(value) == 1; LOGI_IF(mDebugRegion, "showupdates enabled"); LOGI_IF(mDebugBackground, "showbackground enabled"); + LOGI_IF(mUseDithering, "dithering enabled"); } SurfaceFlinger::~SurfaceFlinger() @@ -1692,12 +1699,18 @@ status_t SurfaceFlinger::onTransact( reply->writeInt32(0); reply->writeInt32(mDebugRegion); reply->writeInt32(mDebugBackground); + reply->writeInt32(mRenderEffect); return NO_ERROR; case 1013: { Mutex::Autolock _l(mStateLock); const DisplayHardware& hw(graphicPlane(0).displayHardware()); reply->writeInt32(hw.getPageFlipCount()); } + case 1014: { // RENDER_EFFECT + // TODO: filter to only allow valid effects + mRenderEffect = data.readInt32(); + return NO_ERROR; + } return NO_ERROR; } } diff --git a/libs/surfaceflinger/SurfaceFlinger.h b/libs/surfaceflinger/SurfaceFlinger.h index d75dc15..812fd43 100644 --- a/libs/surfaceflinger/SurfaceFlinger.h +++ b/libs/surfaceflinger/SurfaceFlinger.h @@ -174,6 +174,9 @@ public: overlay_control_device_t* getOverlayEngine() const; + inline int getRenderEffect() const { return mRenderEffect; } + inline int getUseDithering() const { return mUseDithering; } + status_t removeLayer(const sp<LayerBase>& layer); status_t addLayer(const sp<LayerBase>& layer); @@ -354,6 +357,7 @@ private: // don't use a lock for these, we don't care int mDebugRegion; int mDebugBackground; + int mRenderEffect; volatile nsecs_t mDebugInSwapBuffers; nsecs_t mLastSwapBufferTime; volatile nsecs_t mDebugInTransaction; @@ -372,6 +376,7 @@ private: // only written in the main thread, only read in other threads volatile int32_t mSecureFrameBuffer; + bool mUseDithering; }; // --------------------------------------------------------------------------- diff --git a/libs/surfaceflinger_client/Android.mk b/libs/surfaceflinger_client/Android.mk index fe85b34..5368280 100644 --- a/libs/surfaceflinger_client/Android.mk +++ b/libs/surfaceflinger_client/Android.mk @@ -10,6 +10,10 @@ LOCAL_SRC_FILES:= \ Surface.cpp \ SurfaceComposerClient.cpp +LOCAL_MODULE:= libsurfaceflinger_client + +ifneq ($(BOARD_USES_ECLAIR_LIBCAMERA),true) + LOCAL_SHARED_LIBRARIES := \ libcutils \ libutils \ @@ -17,10 +21,15 @@ LOCAL_SHARED_LIBRARIES := \ libhardware \ libui -LOCAL_MODULE:= libsurfaceflinger_client ifeq ($(TARGET_SIMULATOR),true) LOCAL_LDLIBS += -lpthread endif include $(BUILD_SHARED_LIBRARY) + +else + +include $(BUILD_STATIC_LIBRARY) + +endif diff --git a/libs/ui/Android.mk b/libs/ui/Android.mk index f7acd97..c5bc8bd 100644 --- a/libs/ui/Android.mk +++ b/libs/ui/Android.mk @@ -26,6 +26,27 @@ LOCAL_SHARED_LIBRARIES := \ libhardware \ libhardware_legacy + +ifeq ($(BOARD_USES_ECLAIR_LIBCAMERA),true) + +LOCAL_SRC_FILES+= \ + ../camera/Camera.cpp \ + ../camera/CameraParameters.cpp \ + ../camera/ICamera.cpp \ + ../camera/ICameraClient.cpp \ + ../camera/ICameraService.cpp + +LOCAL_SRC_FILES+= \ + ../surfaceflinger_client/ISurfaceComposer.cpp \ + ../surfaceflinger_client/ISurface.cpp \ + ../surfaceflinger_client/ISurfaceFlingerClient.cpp \ + ../surfaceflinger_client/LayerState.cpp \ + ../surfaceflinger_client/SharedBufferStack.cpp \ + ../surfaceflinger_client/Surface.cpp \ + ../surfaceflinger_client/SurfaceComposerClient.cpp + +endif + LOCAL_MODULE:= libui ifeq ($(TARGET_SIMULATOR),true) diff --git a/libs/ui/EventHub.cpp b/libs/ui/EventHub.cpp index d45eaf0..0a98cb2 100644 --- a/libs/ui/EventHub.cpp +++ b/libs/ui/EventHub.cpp @@ -642,7 +642,10 @@ int EventHub::open_device(const char *deviceName) if (ioctl(fd, EVIOCGBIT(EV_REL, sizeof(rel_bitmask)), rel_bitmask) >= 0) { if (test_bit(REL_X, rel_bitmask) && test_bit(REL_Y, rel_bitmask)) { - device->classes |= CLASS_TRACKBALL; + if (test_bit(BTN_LEFT, key_bitmask) && test_bit(BTN_RIGHT, key_bitmask)) + device->classes |= CLASS_MOUSE; + else + device->classes |= CLASS_TRACKBALL; } } } diff --git a/libs/ui/Overlay.cpp b/libs/ui/Overlay.cpp index 3aa8950..96f8006 100644 --- a/libs/ui/Overlay.cpp +++ b/libs/ui/Overlay.cpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2007 The Android Open Source Project + * Copyright (c) 2009, Code Aurora Forum. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -83,6 +84,12 @@ status_t Overlay::getCrop(uint32_t* x, uint32_t* y, uint32_t* w, uint32_t* h) return mOverlayData->getCrop(mOverlayData, x, y, w, h); } +status_t Overlay::setFd(int fd) +{ + if (mStatus != NO_ERROR) return mStatus; + return mOverlayData->setFd(mOverlayData, fd); +} + int32_t Overlay::getBufferCount() const { if (mStatus != NO_ERROR) return mStatus; diff --git a/libs/utils/ResourceTypes.cpp b/libs/utils/ResourceTypes.cpp index 7e0f881..1a40deb 100644 --- a/libs/utils/ResourceTypes.cpp +++ b/libs/utils/ResourceTypes.cpp @@ -4393,7 +4393,6 @@ void ResTable::print(bool inclValues) const } printf("\n"); - if (inclValues) { if (valuePtr != NULL) { printf(" "); print_value(pkg, value); @@ -4413,7 +4412,6 @@ void ResTable::print(bool inclValues) const + size + sizeof(*mapPtr)-sizeof(mapPtr->value)); } } - } } } } |