From 9efe265f086d482802c236ae1a4ef75507efa76d Mon Sep 17 00:00:00 2001 From: Fred Quintana Date: Wed, 28 Oct 2009 22:53:51 -0700 Subject: [PATCH 1/4] unhide AccountManagerResponse --- api/current.xml | 65 +++++++++++++++++++ .../accounts/AccountManagerResponse.java | 10 ++- 2 files changed, 72 insertions(+), 3 deletions(-) diff --git a/api/current.xml b/api/current.xml index 936e67e05ddb8..b4161ae2381e2 100644 --- a/api/current.xml +++ b/api/current.xml @@ -14970,6 +14970,71 @@ > + + + + + + + + + + + + + + + + + + + + + + CREATOR = new Creator() { public AccountManagerResponse createFromParcel(Parcel source) { @@ -71,4 +75,4 @@ public class AccountManagerResponse implements Parcelable { return new AccountManagerResponse[size]; } }; -} \ No newline at end of file +} From 608a2630bb1eec63431cf065a76962e138aa1dc2 Mon Sep 17 00:00:00 2001 From: Gloria Wang Date: Thu, 29 Oct 2009 15:46:37 -0700 Subject: [PATCH 2/4] Dump media recorder PID in dumpsys media.player, and fix minor bugs. --- .../MediaPlayerService.cpp | 19 ++++++++++++++++++- .../MediaPlayerService.h | 3 +++ .../MediaRecorderClient.cpp | 10 +++++++++- .../MediaRecorderClient.h | 4 +++- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp index 84be8746b813b..9d2c779e70e30 100644 --- a/media/libmediaplayerservice/MediaPlayerService.cpp +++ b/media/libmediaplayerservice/MediaPlayerService.cpp @@ -225,7 +225,10 @@ MediaPlayerService::~MediaPlayerService() sp MediaPlayerService::createMediaRecorder(pid_t pid) { #ifndef NO_OPENCORE - sp recorder = new MediaRecorderClient(pid); + sp recorder = new MediaRecorderClient(this, pid); + wp w = recorder; + Mutex::Autolock lock(mLock); + mMediaRecorderClients.add(w); #else sp recorder = NULL; #endif @@ -233,6 +236,13 @@ sp MediaPlayerService::createMediaRecorder(pid_t pid) return recorder; } +void MediaPlayerService::removeMediaRecorderClient(wp client) +{ + Mutex::Autolock lock(mLock); + mMediaRecorderClients.remove(client); + LOGV("Delete media recorder client"); +} + sp MediaPlayerService::createMetadataRetriever(pid_t pid) { sp retriever = new MetadataRetrieverClient(pid); @@ -460,6 +470,13 @@ status_t MediaPlayerService::dump(int fd, const Vector& args) sp c = mClients[i].promote(); if (c != 0) c->dump(fd, args); } + for (int i = 0, n = mMediaRecorderClients.size(); i < n; ++i) { + result.append(" MediaRecorderClient\n"); + sp c = mMediaRecorderClients[i].promote(); + snprintf(buffer, 255, " pid(%d)\n\n", c->mPid); + result.append(buffer); + } + result.append(" Files opened and/or mapped:\n"); snprintf(buffer, SIZE, "/proc/%d/maps", myTid()); FILE *f = fopen(buffer, "r"); diff --git a/media/libmediaplayerservice/MediaPlayerService.h b/media/libmediaplayerservice/MediaPlayerService.h index 7d2e611838d91..43c4915522ab7 100644 --- a/media/libmediaplayerservice/MediaPlayerService.h +++ b/media/libmediaplayerservice/MediaPlayerService.h @@ -35,6 +35,7 @@ namespace android { class IMediaRecorder; class IMediaMetadataRetriever; class IOMX; +class MediaRecorderClient; #define CALLBACK_ANTAGONIZER 0 #if CALLBACK_ANTAGONIZER @@ -175,6 +176,7 @@ public: // IMediaPlayerService interface virtual sp createMediaRecorder(pid_t pid); + void removeMediaRecorderClient(wp client); virtual sp createMetadataRetriever(pid_t pid); // House keeping for media player clients @@ -280,6 +282,7 @@ private: mutable Mutex mLock; SortedVector< wp > mClients; + SortedVector< wp > mMediaRecorderClients; int32_t mNextConnId; }; diff --git a/media/libmediaplayerservice/MediaRecorderClient.cpp b/media/libmediaplayerservice/MediaRecorderClient.cpp index e54f20d5ab620..95ee3e46218a8 100644 --- a/media/libmediaplayerservice/MediaRecorderClient.cpp +++ b/media/libmediaplayerservice/MediaRecorderClient.cpp @@ -32,7 +32,10 @@ #include #include +#include + #include "MediaRecorderClient.h" +#include "MediaPlayerService.h" namespace android { @@ -80,6 +83,7 @@ status_t MediaRecorderClient::setVideoSource(int vs) Mutex::Autolock lock(mLock); if (mRecorder == NULL) { LOGE("recorder is not initialized"); + return NO_INIT; } return mRecorder->setVideoSource((video_source)vs); } @@ -93,6 +97,7 @@ status_t MediaRecorderClient::setAudioSource(int as) Mutex::Autolock lock(mLock); if (mRecorder == NULL) { LOGE("recorder is not initialized"); + return NO_INIT; } return mRecorder->setAudioSource((audio_source)as); } @@ -271,15 +276,18 @@ status_t MediaRecorderClient::release() if (mRecorder != NULL) { delete mRecorder; mRecorder = NULL; + wp client(this); + mMediaPlayerService->removeMediaRecorderClient(client); } return NO_ERROR; } -MediaRecorderClient::MediaRecorderClient(pid_t pid) +MediaRecorderClient::MediaRecorderClient(const sp& service, pid_t pid) { LOGV("Client constructor"); mPid = pid; mRecorder = new PVMediaRecorder(); + mMediaPlayerService = service; } MediaRecorderClient::~MediaRecorderClient() diff --git a/media/libmediaplayerservice/MediaRecorderClient.h b/media/libmediaplayerservice/MediaRecorderClient.h index 6a1c2d5c46364..6260441a8825e 100644 --- a/media/libmediaplayerservice/MediaRecorderClient.h +++ b/media/libmediaplayerservice/MediaRecorderClient.h @@ -24,6 +24,7 @@ namespace android { class PVMediaRecorder; class ISurface; +class MediaPlayerService; class MediaRecorderClient : public BnMediaRecorder { @@ -53,12 +54,13 @@ public: private: friend class MediaPlayerService; // for accessing private constructor - MediaRecorderClient(pid_t pid); + MediaRecorderClient(const sp& service, pid_t pid); virtual ~MediaRecorderClient(); pid_t mPid; Mutex mLock; PVMediaRecorder *mRecorder; + sp mMediaPlayerService; }; }; // namespace android From 4e036287fd64d936478f7168454ed5b8816e157f Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Thu, 29 Oct 2009 15:47:12 -0700 Subject: [PATCH 3/4] update line test to expose some bug on SGX530 ed4 --- opengl/tests/linetex/linetex.cpp | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/opengl/tests/linetex/linetex.cpp b/opengl/tests/linetex/linetex.cpp index e62fe035a3bbe..992a10c729a4d 100644 --- a/opengl/tests/linetex/linetex.cpp +++ b/opengl/tests/linetex/linetex.cpp @@ -68,31 +68,28 @@ int main(int argc, char** argv) glBindTexture(GL_TEXTURE_2D, 0); glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glDisable(GL_DITHER); glDisable(GL_BLEND); glEnable(GL_TEXTURE_2D); glColor4f(1,1,1,1); - const uint32_t t32[] = { - 0xFFFFFFFF, 0xFF0000FF, 0xFF00FF00, 0xFFFF0000, - 0xFFFFFF00, 0xFFFF00FF, 0xFF00FFFF, 0xFF000000 - }; + const uint16_t t16[64] = { 0xFFFF, 0xF800, 0x07E0, 0x001F }; const GLfloat vertices[4][2] = { - { 0, 0 }, - { w, h } + { w/2, 0 }, + { w/2, h } }; const GLfloat texCoords[4][2] = { { 0, 0 }, - { 1, 0 } + { 1, 1 } }; - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, t32); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, 4, 0, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, t16); glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); From 824838d74eb0316f6987a1d98d2d9e9fa8d4e15b Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Thu, 29 Oct 2009 16:39:36 -0700 Subject: [PATCH 4/4] Avoid NPE when callers send null selection args. Fixes http://b/2226007 --- core/java/android/content/ContentProviderOperation.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/core/java/android/content/ContentProviderOperation.java b/core/java/android/content/ContentProviderOperation.java index 0467516b4b846..ca36df2fbebb4 100644 --- a/core/java/android/content/ContentProviderOperation.java +++ b/core/java/android/content/ContentProviderOperation.java @@ -545,8 +545,12 @@ public class ContentProviderOperation implements Parcelable { "only updates, deletes, and asserts can have selections"); } mSelection = selection; - mSelectionArgs = new String[selectionArgs.length]; - System.arraycopy(selectionArgs, 0, mSelectionArgs, 0, selectionArgs.length); + if (selectionArgs == null) { + mSelectionArgs = null; + } else { + mSelectionArgs = new String[selectionArgs.length]; + System.arraycopy(selectionArgs, 0, mSelectionArgs, 0, selectionArgs.length); + } return this; }