Merge change Ie05f07df into eclair

* changes:
  fix [2170319] gmail bulk operation checkbox latency on passion
This commit is contained in:
Android (Google) Code Review
2009-10-07 20:25:08 -04:00
8 changed files with 14 additions and 99 deletions

View File

@@ -289,6 +289,7 @@ public:
void setStatus(status_t status);
status_t reallocate();
status_t assertReallocate(int buffer);
int32_t getQueuedCount() 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;
sp<IMemoryHeap> mControlMemory;
sp<ISurfaceFlingerClient> mClient;
SurfaceFlingerSynchro* mSignalServer;
sp<ISurfaceComposer> mSignalServer;
};
}; // namespace android

View File

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

View File

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

View File

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

View File

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