- 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::OnSourceNameChanged(int index) {
}
void DesktopCapturer::OnSourceThumbnailChanged(int index) {
}
bool DesktopCapturer::OnRefreshFinished() {
  Emit("finished", media_list_->GetSources());
  media_list_.reset();
  return false;
}
mate::Handle<DesktopCapturer> DesktopCapturer::Create(v8::Isolate* isolate) {
  return mate::CreateHandle(isolate, new DesktopCapturer(isolate));
}
void DesktopCapturer::BuildPrototype(
    v8::Isolate* isolate, v8::Local<v8::ObjectTemplate> prototype) {
  mate::ObjectTemplateBuilder(isolate, prototype)
      .SetMethod("startHandling", &DesktopCapturer::StartHandling);
}
}  
}  
namespace {
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
                v8::Local<v8::Context> context, void* priv) {
  v8::Isolate* isolate = context->GetIsolate();
  mate::Dictionary dict(isolate, exports);
  dict.Set("desktopCapturer", atom::api::DesktopCapturer::Create(isolate));
}
}  
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_desktop_capturer, Initialize);