Line data Source code
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 {
15 : namespace media {
16 :
17 : /**
18 : * Handle MediaSystemResourceManager's IPC
19 : */
20 : class MediaSystemResourceManagerParent final : public PMediaSystemResourceManagerParent
21 : {
22 : public:
23 : MediaSystemResourceManagerParent();
24 : virtual ~MediaSystemResourceManagerParent();
25 :
26 : protected:
27 : mozilla::ipc::IPCResult RecvAcquire(const uint32_t& aId,
28 : const MediaSystemResourceType& aResourceType,
29 : const bool& aWillWait) override;
30 :
31 : mozilla::ipc::IPCResult RecvRelease(const uint32_t& aId) override;
32 :
33 : mozilla::ipc::IPCResult RecvRemoveResourceManager() override;
34 :
35 : private:
36 : void ActorDestroy(ActorDestroyReason aActorDestroyReason) override;
37 :
38 : struct MediaSystemResourceRequest {
39 : MediaSystemResourceRequest()
40 : : mId(-1), mResourceType(MediaSystemResourceType::INVALID_RESOURCE) {}
41 0 : MediaSystemResourceRequest(uint32_t aId, MediaSystemResourceType aResourceType)
42 0 : : mId(aId), mResourceType(aResourceType) {}
43 : int32_t mId;
44 : MediaSystemResourceType mResourceType;
45 : };
46 :
47 : bool mDestroyed;
48 :
49 : RefPtr<MediaSystemResourceService> mMediaSystemResourceService;
50 :
51 : nsClassHashtable<nsUint32HashKey, MediaSystemResourceRequest> mResourceRequests;
52 : };
53 :
54 : } // namespace media
55 : } // namespace mozilla
56 :
57 : #endif
|