PlayingRefChangeHandler.h (1142B)
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim:set ts=2 sw=2 sts=2 et cindent: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #ifndef PlayingRefChangeHandler_h__ 8 #define PlayingRefChangeHandler_h__ 9 10 #include "AudioNodeTrack.h" 11 #include "nsThreadUtils.h" 12 13 namespace mozilla::dom { 14 15 class PlayingRefChangeHandler final : public Runnable { 16 public: 17 enum ChangeType { ADDREF, RELEASE }; 18 PlayingRefChangeHandler(AudioNodeTrack* aTrack, ChangeType aChange) 19 : Runnable("dom::PlayingRefChangeHandler"), 20 mTrack(aTrack), 21 mChange(aChange) {} 22 23 NS_IMETHOD Run() override { 24 RefPtr<AudioNode> node = mTrack->Engine()->NodeMainThread(); 25 if (node) { 26 if (mChange == ADDREF) { 27 node->MarkActive(); 28 } else if (mChange == RELEASE) { 29 node->MarkInactive(); 30 } 31 } 32 return NS_OK; 33 } 34 35 private: 36 RefPtr<AudioNodeTrack> mTrack; 37 ChangeType mChange; 38 }; 39 40 } // namespace mozilla::dom 41 42 #endif