Merge change Ie05f07df into eclair
* changes: fix [2170319] gmail bulk operation checkbox latency on passion
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -153,7 +153,7 @@ private:
|
||||
SharedClient* mControl;
|
||||
sp<IMemoryHeap> mControlMemory;
|
||||
sp<ISurfaceFlingerClient> mClient;
|
||||
SurfaceFlingerSynchro* mSignalServer;
|
||||
sp<ISurfaceComposer> mSignalServer;
|
||||
};
|
||||
|
||||
}; // namespace android
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -27,8 +27,7 @@ LOCAL_SRC_FILES:= \
|
||||
Region.cpp \
|
||||
SharedBufferStack.cpp \
|
||||
Surface.cpp \
|
||||
SurfaceComposerClient.cpp \
|
||||
SurfaceFlingerSynchro.cpp
|
||||
SurfaceComposerClient.cpp
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := \
|
||||
libcutils \
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user