static void FlushAllImagesSync(ImageClient* aClient, ImageContainer* aContainer, RefPtr<AsyncTransactionWaiter>&& aWaiter) { if (!ImageBridgeChild::IsCreated() || ImageBridgeChild::IsShutDown()) { // How sad. If we get into this branch it means that the ImageBridge // got destroyed between the time we ImageBridgeChild::FlushAllImage // was called on some thread, and the time this function was proxied // to the ImageBridge thread. ImageBridge gets destroyed way to late // in the shutdown of gecko for this to be happening for a good reason. NS_WARNING("Something is holding on to graphics resources after the shutdown" "of the graphics subsystem!"); aWaiter->DecrementWaitCount(); return; } MOZ_ASSERT(aClient); sImageBridgeChildSingleton->BeginTransaction(); if (aContainer) { aContainer->ClearImagesFromImageBridge(); } aClient->FlushAllImages(aWaiter); sImageBridgeChildSingleton->EndTransaction(); // This decrement is balanced by the increment in FlushAllImages. // If any AsyncTransactionTrackers were created by FlushAllImages and attached // to aWaiter, aWaiter will not complete until those trackers all complete. // Otherwise, aWaiter will be ready to complete now. aWaiter->DecrementWaitCount(); }
// static void ImageBridgeChild::UpdateAsyncCanvasRendererNow(AsyncCanvasRenderer* aWrapper) { MOZ_ASSERT(aWrapper); sImageBridgeChildSingleton->BeginTransaction(); aWrapper->GetCanvasClient()->Updated(); sImageBridgeChildSingleton->EndTransaction(); }
static void UpdateImageClientNow(ImageClient* aClient, ImageContainer* aContainer) { MOZ_ASSERT(aClient); MOZ_ASSERT(aContainer); sImageBridgeChildSingleton->BeginTransaction(); aClient->UpdateImage(aContainer, Layer::CONTENT_OPAQUE); sImageBridgeChildSingleton->EndTransaction(); }
static void FlushAllImagesSync(ImageClient* aClient, ImageContainer* aContainer, bool aExceptFront, AsyncTransactionTracker* aStatus) { MOZ_ASSERT(aClient); sImageBridgeChildSingleton->BeginTransaction(); if (aContainer && !aExceptFront) { aContainer->ClearCurrentImage(); } aClient->FlushAllImages(aExceptFront, aStatus); aClient->OnTransaction(); sImageBridgeChildSingleton->EndTransaction(); }
//static void ImageBridgeChild::FlushAllImagesNow(ImageClient* aClient, ImageContainer* aContainer, bool aExceptFront) { MOZ_ASSERT(aClient); sImageBridgeChildSingleton->BeginTransaction(); if (aContainer && !aExceptFront) { aContainer->ClearCurrentImage(); } aClient->FlushAllImages(aExceptFront); aClient->OnTransaction(); sImageBridgeChildSingleton->EndTransaction(); }
static void UpdateImageClientNow(ImageClient* aClient, RefPtr<ImageContainer>&& aContainer) { if (!ImageBridgeChild::IsCreated() || ImageBridgeChild::IsShutDown()) { NS_WARNING("Something is holding on to graphics resources after the shutdown" "of the graphics subsystem!"); return; } MOZ_ASSERT(aClient); MOZ_ASSERT(aContainer); sImageBridgeChildSingleton->BeginTransaction(); aClient->UpdateImage(aContainer, Layer::CONTENT_OPAQUE); sImageBridgeChildSingleton->EndTransaction(); }
static void FlushAllImagesSync(ImageClient* aClient, ImageContainer* aContainer, AsyncTransactionWaiter* aWaiter) { MOZ_ASSERT(aClient); sImageBridgeChildSingleton->BeginTransaction(); if (aContainer) { aContainer->ClearImagesFromImageBridge(); } aClient->FlushAllImages(aWaiter); sImageBridgeChildSingleton->EndTransaction(); // This decrement is balanced by the increment in FlushAllImages. // If any AsyncTransactionTrackers were created by FlushAllImages and attached // to aWaiter, aWaiter will not complete until those trackers all complete. // Otherwise, aWaiter will be ready to complete now. aWaiter->DecrementWaitCount(); }