MediaSystemResourceManagerParent.h (1845B)
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 #if !defined(MediaSystemResourceManagerParent_h_) 7 # define MediaSystemResourceManagerParent_h_ 8 9 # include "MediaSystemResourceManager.h" 10 # include "MediaSystemResourceService.h" 11 # include "MediaSystemResourceTypes.h" 12 # include "mozilla/media/PMediaSystemResourceManagerParent.h" 13 14 namespace mozilla::media { 15 16 /** 17 * Handle MediaSystemResourceManager's IPC 18 */ 19 class MediaSystemResourceManagerParent final 20 : public PMediaSystemResourceManagerParent { 21 friend class PMediaSystemResourceManagerParent; 22 23 public: 24 MediaSystemResourceManagerParent(); 25 virtual ~MediaSystemResourceManagerParent(); 26 27 protected: 28 mozilla::ipc::IPCResult RecvAcquire( 29 const uint32_t& aId, const MediaSystemResourceType& aResourceType, 30 const bool& aWillWait); 31 32 mozilla::ipc::IPCResult RecvRelease(const uint32_t& aId); 33 34 mozilla::ipc::IPCResult RecvRemoveResourceManager(); 35 36 private: 37 void ActorDestroy(ActorDestroyReason aActorDestroyReason) override; 38 39 struct MediaSystemResourceRequest { 40 MediaSystemResourceRequest() 41 : mId(-1), mResourceType(MediaSystemResourceType::INVALID_RESOURCE) {} 42 MediaSystemResourceRequest(uint32_t aId, 43 MediaSystemResourceType aResourceType) 44 : mId(aId), mResourceType(aResourceType) {} 45 int32_t mId; 46 MediaSystemResourceType mResourceType; 47 }; 48 49 bool mDestroyed; 50 51 RefPtr<MediaSystemResourceService> mMediaSystemResourceService; 52 53 nsClassHashtable<nsUint32HashKey, MediaSystemResourceRequest> 54 mResourceRequests; 55 }; 56 57 } // namespace mozilla::media 58 59 #endif