Bug 1005409 - Move the releasing of shared frame metrics to always run on the compositor thread. r=botond

This commit is contained in:
Kartikaya Gupta 2014-05-12 14:16:41 -04:00
parent 8d0cf46911
commit 2e664ce066

View File

@ -504,16 +504,6 @@ AsyncPanZoomController::AsyncPanZoomController(uint64_t aLayersId,
}
AsyncPanZoomController::~AsyncPanZoomController() {
PCompositorParent* compositor = GetSharedFrameMetricsCompositor();
// Only send the release message if the SharedFrameMetrics has been created.
if (compositor && mSharedFrameMetricsBuffer) {
unused << compositor->SendReleaseSharedCompositorFrameMetrics(mFrameMetrics.GetScrollId(), mAPZCId);
}
delete mSharedFrameMetricsBuffer;
delete mSharedLock;
MOZ_COUNT_DTOR(AsyncPanZoomController);
}
@ -558,6 +548,20 @@ AsyncPanZoomController::Destroy()
mLastChild = nullptr;
mParent = nullptr;
mTreeManager = nullptr;
PCompositorParent* compositor = GetSharedFrameMetricsCompositor();
// Only send the release message if the SharedFrameMetrics has been created.
if (compositor && mSharedFrameMetricsBuffer) {
unused << compositor->SendReleaseSharedCompositorFrameMetrics(mFrameMetrics.GetScrollId(), mAPZCId);
}
{ // scope the lock
ReentrantMonitorAutoEnter lock(mMonitor);
delete mSharedFrameMetricsBuffer;
mSharedFrameMetricsBuffer = nullptr;
delete mSharedLock;
mSharedLock = nullptr;
}
}
bool