Chromium Code Reviews| Index: content/browser/renderer_host/media/media_stream_manager.cc |
| diff --git a/content/browser/renderer_host/media/media_stream_manager.cc b/content/browser/renderer_host/media/media_stream_manager.cc |
| index 3cdb1abffd3cddfffe648d9c74711eb1c7b8f0ae..c0508302d2728226501944a22c02cb18a91de4d4 100644 |
| --- a/content/browser/renderer_host/media/media_stream_manager.cc |
| +++ b/content/browser/renderer_host/media/media_stream_manager.cc |
| @@ -39,6 +39,7 @@ |
| #include "media/base/media_switches.h" |
| #include "media/video/capture/fake_video_capture_device_factory.h" |
| #include "media/video/capture/file_video_capture_device_factory.h" |
| +#include "ui/gfx/screen.h" |
| #include "url/gurl.h" |
| #if defined(OS_WIN) |
| @@ -343,12 +344,14 @@ MediaStreamManager::MediaStreamManager() |
| : audio_manager_(NULL), |
| monitoring_started_(false), |
| io_loop_(NULL), |
| + observing_screen_(false), |
| use_fake_ui_(false) {} |
| MediaStreamManager::MediaStreamManager(media::AudioManager* audio_manager) |
| : audio_manager_(audio_manager), |
| monitoring_started_(false), |
| io_loop_(NULL), |
| + observing_screen_(false), |
| use_fake_ui_(false) { |
| DCHECK(audio_manager_); |
| memset(active_enumeration_ref_count_, 0, |
| @@ -382,6 +385,13 @@ MediaStreamManager::~MediaStreamManager() { |
| // MediaStreamManager, but it may be NULL in unit tests. |
| if (power_monitor) |
| power_monitor->RemoveObserver(this); |
| + |
| + if (observing_screen_) { |
| + gfx::Screen* screen = |
| + gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE); |
| + if (screen) |
| + screen->RemoveObserver(this); |
| + } |
| } |
| VideoCaptureManager* MediaStreamManager::video_capture_manager() { |
| @@ -447,6 +457,16 @@ void MediaStreamManager::GenerateStream(MediaStreamRequester* requester, |
| UseFakeUI(scoped_ptr<FakeMediaStreamUIProxy>()); |
| } |
| + if (!observing_screen_) { |
|
vrk (LEFT CHROMIUM)
2014/05/09 01:11:31
Hmm.. I don't think this is the right place to add
Zachary Kuznia
2014/05/09 07:42:22
I will discuss this with them.
|
| + gfx::Screen* screen = |
| + gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE); |
| + if (screen) { |
| + screen->AddObserver(this); |
| + OnDisplayBoundsChanged(screen->GetPrimaryDisplay()); |
|
vrk (LEFT CHROMIUM)
2014/05/09 01:11:31
Generally it's best let observer functions be call
Zachary Kuznia
2014/05/09 07:42:22
Done.
|
| + observing_screen_ = true; |
| + } |
| + } |
| + |
| DeviceRequest* request = new DeviceRequest(requester, |
| render_process_id, |
| render_view_id, |
| @@ -708,6 +728,7 @@ void MediaStreamManager::OpenDevice(MediaStreamRequester* requester, |
| DCHECK(type == MEDIA_DEVICE_AUDIO_CAPTURE || |
| type == MEDIA_DEVICE_VIDEO_CAPTURE); |
| DVLOG(1) << "OpenDevice ({page_request_id = " << page_request_id << "})"; |
| + |
| StreamOptions options; |
| if (IsAudioMediaType(type)) { |
| options.audio_requested = true; |
| @@ -1947,4 +1968,26 @@ void MediaStreamManager::OnMediaStreamUIWindowId(MediaStreamType video_type, |
| } |
| } |
| +void MediaStreamManager::OnDisplayBoundsChanged(const gfx::Display& display) { |
| + if (display.IsInternal()) { |
|
vrk (LEFT CHROMIUM)
2014/05/09 01:11:31
Move the "if (display.IsInternal())" check to SetD
Zachary Kuznia
2014/05/09 07:42:22
Done.
|
| + BrowserThread::PostTask( |
| + BrowserThread::IO, |
| + FROM_HERE, |
| + base::Bind(&MediaStreamManager::SetDisplayRotationOnIOThread, |
| + base::Unretained(this), display.rotation())); |
| + } |
| +} |
| + |
| +void MediaStreamManager::OnDisplayAdded(const gfx::Display& new_display) { |
|
vrk (LEFT CHROMIUM)
2014/05/09 01:11:31
Nit: {} on one line, and comment out the unused pa
Zachary Kuznia
2014/05/09 07:42:22
Done.
|
| +} |
| + |
| +void MediaStreamManager::OnDisplayRemoved(const gfx::Display& old_display) { |
|
vrk (LEFT CHROMIUM)
2014/05/09 01:11:31
ditto above
Zachary Kuznia
2014/05/09 07:42:22
Done, save that the } doesn't fit on the same line
|
| +} |
| + |
| +void MediaStreamManager::SetDisplayRotationOnIOThread( |
| + gfx::Display::Rotation rotation) { |
| + DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| + video_capture_manager()->SetDisplayRotation(rotation); |
| +} |
| + |
| } // namespace content |