/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #if !defined(MediaSystemResourceManagerParent_h_) # define MediaSystemResourceManagerParent_h_ # include "MediaSystemResourceManager.h" # include "MediaSystemResourceService.h" # include "MediaSystemResourceTypes.h" # include "mozilla/media/PMediaSystemResourceManagerParent.h" namespace mozilla::media { /** * Handle MediaSystemResourceManager's IPC */ class MediaSystemResourceManagerParent final : public PMediaSystemResourceManagerParent { friend class PMediaSystemResourceManagerParent; public: MediaSystemResourceManagerParent(); virtual ~MediaSystemResourceManagerParent(); protected: mozilla::ipc::IPCResult RecvAcquire( const uint32_t& aId, const MediaSystemResourceType& aResourceType, const bool& aWillWait); mozilla::ipc::IPCResult RecvRelease(const uint32_t& aId); mozilla::ipc::IPCResult RecvRemoveResourceManager(); private: void ActorDestroy(ActorDestroyReason aActorDestroyReason) override; struct MediaSystemResourceRequest { MediaSystemResourceRequest() : mId(-1), mResourceType(MediaSystemResourceType::INVALID_RESOURCE) {} MediaSystemResourceRequest(uint32_t aId, MediaSystemResourceType aResourceType) : mId(aId), mResourceType(aResourceType) {} int32_t mId; MediaSystemResourceType mResourceType; }; bool mDestroyed; RefPtr mMediaSystemResourceService; nsClassHashtable mResourceRequests; }; } // namespace mozilla::media #endif