Bug 908797 - Update libui to the latest input code from JB MR2, r=m1
This commit is contained in:
@@ -21,13 +21,17 @@
|
||||
#include "SpriteController.h"
|
||||
|
||||
#include "cutils_log.h"
|
||||
#include "String8.h"
|
||||
#include <utils/String8.h>
|
||||
#ifdef HAVE_ANDROID_OS
|
||||
#include <gui/Surface.h>
|
||||
#endif
|
||||
|
||||
#include <SkBitmap.h>
|
||||
#include <SkCanvas.h>
|
||||
#include <SkColor.h>
|
||||
#include <SkPaint.h>
|
||||
#include <SkXfermode.h>
|
||||
#include <android/native_window.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
@@ -214,33 +218,32 @@ void SpriteController::doUpdateSprites() {
|
||||
if (update.state.surfaceControl != NULL && !update.state.surfaceDrawn
|
||||
&& update.state.wantSurfaceVisible()) {
|
||||
sp<Surface> surface = update.state.surfaceControl->getSurface();
|
||||
Surface::SurfaceInfo surfaceInfo;
|
||||
status_t status = surface->lock(&surfaceInfo);
|
||||
ANativeWindow_Buffer outBuffer;
|
||||
status_t status = surface->lock(&outBuffer, NULL);
|
||||
if (status) {
|
||||
ALOGE("Error %d locking sprite surface before drawing.", status);
|
||||
} else {
|
||||
SkBitmap surfaceBitmap;
|
||||
ssize_t bpr = surfaceInfo.s * bytesPerPixel(surfaceInfo.format);
|
||||
ssize_t bpr = outBuffer.stride * bytesPerPixel(outBuffer.format);
|
||||
surfaceBitmap.setConfig(SkBitmap::kARGB_8888_Config,
|
||||
surfaceInfo.w, surfaceInfo.h, bpr);
|
||||
surfaceBitmap.setPixels(surfaceInfo.bits);
|
||||
outBuffer.width, outBuffer.height, bpr);
|
||||
surfaceBitmap.setPixels(outBuffer.bits);
|
||||
|
||||
SkCanvas surfaceCanvas;
|
||||
surfaceCanvas.setBitmapDevice(surfaceBitmap);
|
||||
SkCanvas surfaceCanvas(surfaceBitmap);
|
||||
|
||||
SkPaint paint;
|
||||
paint.setXfermodeMode(SkXfermode::kSrc_Mode);
|
||||
surfaceCanvas.drawBitmap(update.state.icon.bitmap, 0, 0, &paint);
|
||||
|
||||
if (surfaceInfo.w > uint32_t(update.state.icon.bitmap.width())) {
|
||||
if (outBuffer.width > uint32_t(update.state.icon.bitmap.width())) {
|
||||
paint.setColor(0); // transparent fill color
|
||||
surfaceCanvas.drawRectCoords(update.state.icon.bitmap.width(), 0,
|
||||
surfaceInfo.w, update.state.icon.bitmap.height(), paint);
|
||||
outBuffer.width, update.state.icon.bitmap.height(), paint);
|
||||
}
|
||||
if (surfaceInfo.h > uint32_t(update.state.icon.bitmap.height())) {
|
||||
if (outBuffer.height > uint32_t(update.state.icon.bitmap.height())) {
|
||||
paint.setColor(0); // transparent fill color
|
||||
surfaceCanvas.drawRectCoords(0, update.state.icon.bitmap.height(),
|
||||
surfaceInfo.w, surfaceInfo.h, paint);
|
||||
outBuffer.width, outBuffer.height, paint);
|
||||
}
|
||||
|
||||
status = surface->unlockAndPost();
|
||||
@@ -317,7 +320,7 @@ void SpriteController::doUpdateSprites() {
|
||||
}
|
||||
|
||||
if (becomingVisible) {
|
||||
status = update.state.surfaceControl->show(surfaceLayer);
|
||||
status = update.state.surfaceControl->show();
|
||||
if (status) {
|
||||
ALOGE("Error %d showing sprite surface.", status);
|
||||
} else {
|
||||
@@ -398,9 +401,9 @@ sp<SurfaceControl> SpriteController::obtainSurface(int32_t width, int32_t height
|
||||
ensureSurfaceComposerClient();
|
||||
|
||||
sp<SurfaceControl> surfaceControl = mSurfaceComposerClient->createSurface(
|
||||
String8("Sprite"), 0, width, height, PIXEL_FORMAT_RGBA_8888);
|
||||
if (surfaceControl == NULL || !surfaceControl->isValid()
|
||||
|| !surfaceControl->getSurface()->isValid()) {
|
||||
String8("Sprite"), width, height, PIXEL_FORMAT_RGBA_8888,
|
||||
ISurfaceComposerClient::eHidden);
|
||||
if (surfaceControl == NULL || !surfaceControl->isValid()) {
|
||||
ALOGE("Error creating sprite surface.");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user