mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-19 08:15:31 +00:00
Bug 1574682 - Implement VREventObserver::NotifyEnumerationCompleted r=imanol
Differential Revision: https://phabricator.services.mozilla.com/D43202 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
21217d8174
commit
291ee2b5f1
@ -162,5 +162,7 @@ void VREventObserver::NotifyPresentationGenerationChanged(uint32_t aDisplayID) {
|
||||
}
|
||||
}
|
||||
|
||||
void VREventObserver::NotifyEnumerationCompleted() {}
|
||||
|
||||
} // namespace dom
|
||||
} // namespace mozilla
|
||||
|
@ -30,6 +30,7 @@ class VREventObserver final : public gfx::VRManagerEventObserver {
|
||||
void NotifyVRDisplayDisconnect(uint32_t aDisplayID) override;
|
||||
void NotifyVRDisplayPresentChange(uint32_t aDisplayID) override;
|
||||
void NotifyPresentationGenerationChanged(uint32_t aDisplayID) override;
|
||||
void NotifyEnumerationCompleted() override;
|
||||
|
||||
void DisconnectFromOwner();
|
||||
void UpdateSpentTimeIn2DTelemetry(bool aUpdate);
|
||||
|
@ -38,6 +38,7 @@ VRManagerChild::VRManagerChild()
|
||||
: mDisplaysInitialized(false),
|
||||
mMessageLoop(MessageLoop::current()),
|
||||
mFrameRequestCallbackCounter(0),
|
||||
mWaitingForEnumeration(false),
|
||||
mBackend(layers::LayersBackend::LAYERS_NONE) {
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
||||
@ -235,6 +236,12 @@ mozilla::ipc::IPCResult VRManagerChild::RecvUpdateDisplayInfo(
|
||||
nav->NotifyVRDisplaysUpdated();
|
||||
}
|
||||
mNavigatorCallbacks.Clear();
|
||||
if (mWaitingForEnumeration) {
|
||||
nsContentUtils::AddScriptRunner(NewRunnableMethod<>(
|
||||
"gfx::VRManagerChild::NotifyEnumerationCompletedInternal", this,
|
||||
&VRManagerChild::NotifyEnumerationCompletedInternal));
|
||||
mWaitingForEnumeration = false;
|
||||
}
|
||||
return IPC_OK();
|
||||
}
|
||||
|
||||
@ -297,6 +304,14 @@ bool VRManagerChild::RefreshVRDisplaysWithCallback(uint64_t aWindowId) {
|
||||
return success;
|
||||
}
|
||||
|
||||
bool VRManagerChild::EnumerateVRDisplays() {
|
||||
bool success = SendRefreshDisplays();
|
||||
if (success) {
|
||||
mWaitingForEnumeration = true;
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
||||
PVRLayerChild* VRManagerChild::CreateVRLayer(uint32_t aDisplayID,
|
||||
nsIEventTarget* aTarget,
|
||||
uint32_t aGroup) {
|
||||
@ -461,6 +476,14 @@ void VRManagerChild::NotifyPresentationGenerationChangedInternal(
|
||||
}
|
||||
}
|
||||
|
||||
void VRManagerChild::NotifyEnumerationCompletedInternal() {
|
||||
nsTArray<RefPtr<VRManagerEventObserver>> listeners;
|
||||
listeners = mListeners;
|
||||
for (auto& listener : listeners) {
|
||||
listener->NotifyEnumerationCompleted();
|
||||
}
|
||||
}
|
||||
|
||||
void VRManagerChild::FireDOMVRDisplayConnectEventsForLoad(
|
||||
VRManagerEventObserver* aObserver) {
|
||||
// We need to fire the VRDisplayConnect event when a page is loaded
|
||||
|
@ -40,6 +40,7 @@ class VRManagerEventObserver {
|
||||
virtual void NotifyVRDisplayPresentChange(uint32_t aDisplayID) = 0;
|
||||
virtual void NotifyPresentationGenerationChanged(uint32_t aDisplayID) = 0;
|
||||
virtual bool GetStopActivityStatus() const = 0;
|
||||
virtual void NotifyEnumerationCompleted() = 0;
|
||||
|
||||
protected:
|
||||
virtual ~VRManagerEventObserver() = default;
|
||||
@ -62,6 +63,7 @@ class VRManagerChild : public PVRManagerChild {
|
||||
|
||||
void GetVRDisplays(nsTArray<RefPtr<VRDisplayClient>>& aDisplays);
|
||||
bool RefreshVRDisplaysWithCallback(uint64_t aWindowId);
|
||||
bool EnumerateVRDisplays();
|
||||
void AddPromise(const uint32_t& aID, dom::Promise* aPromise);
|
||||
|
||||
static void InitSameProcess();
|
||||
@ -136,6 +138,7 @@ class VRManagerChild : public PVRManagerChild {
|
||||
void FireDOMVRDisplayConnectEventsForLoadInternal(
|
||||
uint32_t aDisplayID, VRManagerEventObserver* aObserver);
|
||||
void NotifyPresentationGenerationChangedInternal(uint32_t aDisplayID);
|
||||
void NotifyEnumerationCompletedInternal();
|
||||
|
||||
nsTArray<RefPtr<VRDisplayClient>> mDisplays;
|
||||
bool mDisplaysInitialized;
|
||||
@ -153,6 +156,7 @@ class VRManagerChild : public PVRManagerChild {
|
||||
mozilla::TimeStamp mStartTimeStamp;
|
||||
|
||||
nsTArray<RefPtr<VRManagerEventObserver>> mListeners;
|
||||
bool mWaitingForEnumeration;
|
||||
|
||||
layers::LayersBackend mBackend;
|
||||
RefPtr<layers::SyncObjectClient> mSyncObject;
|
||||
|
Loading…
Reference in New Issue
Block a user