void GMPParent::ActorDestroy(ActorDestroyReason aWhy) { LOGD(("%s::%s: %p (%d)", __CLASS__, __FUNCTION__, this, (int) aWhy)); #ifdef MOZ_CRASHREPORTER if (AbnormalShutdown == aWhy) { nsString dumpID; GetCrashID(dumpID); nsString id; // use the parent address to identify it // We could use any unique-to-the-parent value id.AppendInt(reinterpret_cast<uint64_t>(this)); id.Append(NS_LITERAL_STRING(" ")); AppendUTF8toUTF16(mDisplayName, id); id.Append(NS_LITERAL_STRING(" ")); id.Append(dumpID); // NotifyObservers is mainthread-only NS_DispatchToMainThread(WrapRunnableNM(&GMPNotifyObservers, id), NS_DISPATCH_NORMAL); } #endif // warn us off trying to close again mState = GMPStateClosing; mAbnormalShutdownInProgress = true; CloseActive(false); // Normal Shutdown() will delete the process on unwind. if (AbnormalShutdown == aWhy) { mState = GMPStateClosing; nsRefPtr<GMPParent> self(this); // Note: final destruction will be Dispatched to ourself mService->ReAddOnGMPThread(self); } }
void GMPParent::ActorDestroy(ActorDestroyReason aWhy) { #ifdef MOZ_CRASHREPORTER if (AbnormalShutdown == aWhy) { nsString dumpID; GetCrashID(dumpID); nsString id; // use the parent address to identify it // We could use any unique-to-the-parent value id.AppendInt(reinterpret_cast<uint64_t>(this)); id.Append(NS_LITERAL_STRING(" ")); AppendUTF8toUTF16(mDisplayName, id); id.Append(NS_LITERAL_STRING(" ")); id.Append(dumpID); // NotifyObservers is mainthread-only NS_DispatchToMainThread(WrapRunnableNM(&GMPNotifyObservers, id), NS_DISPATCH_NORMAL); } #endif // warn us off trying to close again mState = GMPStateClosing; CloseActive(); // Normal Shutdown() will delete the process on unwind. if (AbnormalShutdown == aWhy) { NS_DispatchToCurrentThread(NS_NewRunnableMethod(this, &GMPParent::DeleteProcess)); } }