- Electron version: 0.37.6
- Operating system: Ubuntu 14.04

When calling `desktopCapturer.getSources()` with different types one after another, only callback for the first call is executed.

```
desktopCapturer.getSources({ types: ['window'] }, callback1)
desktopCapturer.getSources({ types: ['screen'] }, callback2)
```

Here only `callback1` will be called.

Here is a spec which fails on master branch:

```
it('should respond to two subsequent calls with different options', function (done) {
  var callCount = 0
  var callback = function (error, sources) {
    callCount++
    assert.notEqual(sources.length, 0)
    if (callCount === 2) done()
  }

  desktopCapturer.getSources({ types: ['window'] }, callback)
  desktopCapturer.getSources({ types: ['screen'] }, callback)
})
```

I did some investigation - [`desktopCapturer.startHandling`](https://github.com/electron/electron/blob/master/lib/browser/desktop-capturer.js#L75) is called for a second time, but [`desktopCapturer.emit`](https://github.com/electron/electron/blob/master/lib/browser/desktop-capturer.js#L36) is only called once. Seems like an issue with media listeners, but I wasn't able to get deep into c++ code. Thanks!

atom/browser/api/atom_api_desktop_capturer.cc
}
void DesktopCapturer::StartHandling(bool capture_window,
                                    bool capture_screen,
                                    const gfx::Size& thumbnail_size) {
  webrtc::DesktopCaptureOptions options =
      webrtc::DesktopCaptureOptions::CreateDefault();
#if defined(OS_WIN)
  
  
  
  
  
  
  options.set_disable_effects(false);
#endif
  scoped_ptr<webrtc::ScreenCapturer> screen_capturer(
      capture_screen ? webrtc::ScreenCapturer::Create(options) : nullptr);
  scoped_ptr<webrtc::WindowCapturer> window_capturer(
      capture_window ? webrtc::WindowCapturer::Create(options) : nullptr);
  media_list_.reset(new NativeDesktopMediaList(
      std::move(screen_capturer), std::move(window_capturer)));
  media_list_->SetThumbnailSize(thumbnail_size);
  media_list_->StartUpdating(this);
}
void DesktopCapturer::OnSourceAdded(int index) {
}
void DesktopCapturer::OnSourceRemoved(int index) {
}
void DesktopCapturer::OnSourceMoved(int old_index, int new_index) {