am a2de8e31: Merge change Ie05f07df into eclair

Merge commit 'a2de8e31c2693d009db1f9386406758874dd1d40' into eclair-mr2

* commit 'a2de8e31c2693d009db1f9386406758874dd1d40':
  fix [2170319] gmail bulk operation checkbox latency on passion
This commit is contained in:
Mathias Agopian
2009-10-07 17:33:43 -07:00
committed by Android Git Automerger
8 changed files with 14 additions and 99 deletions

View File

@@ -289,6 +289,7 @@ public:
void setStatus(status_t status); void setStatus(status_t status);
status_t reallocate(); status_t reallocate();
status_t assertReallocate(int buffer); status_t assertReallocate(int buffer);
int32_t getQueuedCount() const;
Region getDirtyRegion(int buffer) const; Region getDirtyRegion(int buffer) const;

View File

@@ -1,48 +0,0 @@
/*
* Copyright (C) 2008 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.
*/
#ifndef ANDROID_SURFACE_FLINGER_SYNCHRO_H
#define ANDROID_SURFACE_FLINGER_SYNCHRO_H
#include <stdint.h>
#include <sys/types.h>
#include <utils/Errors.h>
#include <ui/ISurfaceComposer.h>
namespace android {
class SurfaceFlinger;
class SurfaceFlingerSynchro
{
public:
// client constructor
SurfaceFlingerSynchro(const sp<ISurfaceComposer>& flinger);
~SurfaceFlingerSynchro();
// signal surfaceflinger for some work
status_t signal();
private:
friend class SurfaceFlinger;
sp<ISurfaceComposer> mSurfaceComposer;
};
}; // namespace android
#endif // ANDROID_SURFACE_FLINGER_SYNCHRO_H

View File

@@ -153,7 +153,7 @@ private:
SharedClient* mControl; SharedClient* mControl;
sp<IMemoryHeap> mControlMemory; sp<IMemoryHeap> mControlMemory;
sp<ISurfaceFlingerClient> mClient; sp<ISurfaceFlingerClient> mClient;
SurfaceFlingerSynchro* mSignalServer; sp<ISurfaceComposer> mSignalServer;
}; };
}; // namespace android }; // namespace android

View File

@@ -460,8 +460,10 @@ void Layer::lockPageFlip(bool& recomputeVisibleRegions)
} }
} }
// FIXME: signal an event if we have more buffers waiting if (lcblk->getQueuedCount()) {
// mFlinger->signalEvent(); // signal an event if we have more buffers waiting
mFlinger->signalEvent();
}
if (!mPostedDirtyRegion.isEmpty()) { if (!mPostedDirtyRegion.isEmpty()) {
reloadTexture( mPostedDirtyRegion ); reloadTexture( mPostedDirtyRegion );

View File

@@ -27,8 +27,7 @@ LOCAL_SRC_FILES:= \
Region.cpp \ Region.cpp \
SharedBufferStack.cpp \ SharedBufferStack.cpp \
Surface.cpp \ Surface.cpp \
SurfaceComposerClient.cpp \ SurfaceComposerClient.cpp
SurfaceFlingerSynchro.cpp
LOCAL_SHARED_LIBRARIES := \ LOCAL_SHARED_LIBRARIES := \
libcutils \ libcutils \

View File

@@ -394,6 +394,12 @@ status_t SharedBufferServer::reallocate()
return NO_ERROR; return NO_ERROR;
} }
int32_t SharedBufferServer::getQueuedCount() const
{
SharedBufferStack& stack( *mSharedStack );
return stack.queued;
}
status_t SharedBufferServer::assertReallocate(int buffer) status_t SharedBufferServer::assertReallocate(int buffer)
{ {
ReallocateCondition condition(this, buffer); ReallocateCondition condition(this, buffer);

View File

@@ -42,7 +42,6 @@
#include <private/ui/LayerState.h> #include <private/ui/LayerState.h>
#include <private/ui/SharedBufferStack.h> #include <private/ui/SharedBufferStack.h>
#include <private/ui/SurfaceFlingerSynchro.h>
#define VERBOSE(...) ((void)0) #define VERBOSE(...) ((void)0)
//#define VERBOSE LOGD //#define VERBOSE LOGD
@@ -155,7 +154,6 @@ void SurfaceComposerClient::_init(
{ {
VERBOSE("Creating client %p, conn %p", this, conn.get()); VERBOSE("Creating client %p, conn %p", this, conn.get());
mSignalServer = 0;
mPrebuiltLayerState = 0; mPrebuiltLayerState = 0;
mTransactionOpen = 0; mTransactionOpen = 0;
mStatus = NO_ERROR; mStatus = NO_ERROR;
@@ -168,7 +166,7 @@ void SurfaceComposerClient::_init(
} }
mControlMemory = mClient->getControlBlock(); mControlMemory = mClient->getControlBlock();
mSignalServer = new SurfaceFlingerSynchro(sm); mSignalServer = sm;
mControl = static_cast<SharedClient *>(mControlMemory->getBase()); mControl = static_cast<SharedClient *>(mControlMemory->getBase());
} }
@@ -225,7 +223,6 @@ void SurfaceComposerClient::dispose()
Mutex::Autolock _lg(gLock); Mutex::Autolock _lg(gLock);
Mutex::Autolock _lm(mLock); Mutex::Autolock _lm(mLock);
delete mSignalServer;
mSignalServer = 0; mSignalServer = 0;
if (mClient != 0) { if (mClient != 0) {

View File

@@ -1,42 +0,0 @@
/*
* Copyright (C) 2008 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.
*/
#include <stdint.h>
#include <private/ui/SurfaceFlingerSynchro.h>
namespace android {
// ---------------------------------------------------------------------------
SurfaceFlingerSynchro::SurfaceFlingerSynchro(const sp<ISurfaceComposer>& flinger)
: mSurfaceComposer(flinger)
{
}
SurfaceFlingerSynchro::~SurfaceFlingerSynchro()
{
}
status_t SurfaceFlingerSynchro::signal()
{
mSurfaceComposer->signal();
return NO_ERROR;
}
// ---------------------------------------------------------------------------
}; // namespace android