Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(313)

Side by Side Diff: media/audio/audio_manager.h

Issue 2934613002: Avoid shutdown crash if audio thread is hung. (Closed)
Patch Set: leaks audio manager Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MEDIA_AUDIO_AUDIO_MANAGER_H_ 5 #ifndef MEDIA_AUDIO_AUDIO_MANAGER_H_
6 #define MEDIA_AUDIO_AUDIO_MANAGER_H_ 6 #define MEDIA_AUDIO_AUDIO_MANAGER_H_
7 7
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 10
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 76
77 // Returns the app name or an empty string if it is not set. 77 // Returns the app name or an empty string if it is not set.
78 static const std::string& GetGlobalAppName(); 78 static const std::string& GetGlobalAppName();
79 #endif 79 #endif
80 80
81 // Returns the pointer to the last created instance, or NULL if not yet 81 // Returns the pointer to the last created instance, or NULL if not yet
82 // created. This is a utility method for the code outside of media directory, 82 // created. This is a utility method for the code outside of media directory,
83 // like src/chrome. 83 // like src/chrome.
84 static AudioManager* Get(); 84 static AudioManager* Get();
85 85
86 // Releases all audio resources. 86 // Synchronously releases all audio resources.
87 // Must be called before deletion and on the same thread as AudioManager 87 // Must be called before deletion and on the same thread as AudioManager
88 // was created. 88 // was created.
89 void Shutdown(); 89 // Returns true on success but false if AudioManager could not be shutdown.
90 // AudioManager instance must not be deleted if shutdown failed.
91 bool Shutdown();
90 92
91 // Log callback used for sending log messages from a stream to the object 93 // Log callback used for sending log messages from a stream to the object
92 // that manages the stream. 94 // that manages the stream.
93 using LogCallback = base::Callback<void(const std::string&)>; 95 using LogCallback = base::Callback<void(const std::string&)>;
94 96
95 // Factory for all the supported stream formats. |params| defines parameters 97 // Factory for all the supported stream formats. |params| defines parameters
96 // of the audio stream to be created. 98 // of the audio stream to be created.
97 // 99 //
98 // |params.sample_per_packet| is the requested buffer allocation which the 100 // |params.sample_per_packet| is the requested buffer allocation which the
99 // audio source thinks it can usually fill without blocking. Internally two 101 // audio source thinks it can usually fill without blocking. Internally two
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 std::unique_ptr<AudioThread> audio_thread_; 271 std::unique_ptr<AudioThread> audio_thread_;
270 bool shutdown_ = false; // True after |this| has been shutdown. 272 bool shutdown_ = false; // True after |this| has been shutdown.
271 273
272 THREAD_CHECKER(thread_checker_); 274 THREAD_CHECKER(thread_checker_);
273 DISALLOW_COPY_AND_ASSIGN(AudioManager); 275 DISALLOW_COPY_AND_ASSIGN(AudioManager);
274 }; 276 };
275 277
276 } // namespace media 278 } // namespace media
277 279
278 #endif // MEDIA_AUDIO_AUDIO_MANAGER_H_ 280 #endif // MEDIA_AUDIO_AUDIO_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698