[mediaplayer] improve status reporting

This CL addresses status reporting issues that cause confusion for
the client. In one case, a status update was not provided when a
stream was connected, preventing the client from being informed
that the connection was established. In another case, connection
success was indicated prematurely and contradicted later, creating
false results for tests.

TEST: tested with new CQ tests to be submitted in another CL
Change-Id: I87235bdd0580adb677d5d291d5d9ada79984de1b
diff --git a/bin/mediaplayer/core/player_core.cc b/bin/mediaplayer/core/player_core.cc
index ccac380..45bf86e 100644
--- a/bin/mediaplayer/core/player_core.cc
+++ b/bin/mediaplayer/core/player_core.cc
@@ -46,9 +46,16 @@
           OnStreamRemoved(index);
         }
 
-        if (!more) {
-          MaybeCompleteSetSourceSegment();
+        if (more) {
+          return;
         }
+
+        if (set_source_segment_callback_) {
+          MaybeCompleteSetSourceSegment();
+          return;
+        }
+
+        NotifyUpdate();
       });
 
   // Account for the streams that have already been enumerated.
diff --git a/bin/mediaplayer/core/renderer_sink_segment.cc b/bin/mediaplayer/core/renderer_sink_segment.cc
index a54705c..dc348e3 100644
--- a/bin/mediaplayer/core/renderer_sink_segment.cc
+++ b/bin/mediaplayer/core/renderer_sink_segment.cc
@@ -47,7 +47,7 @@
   FXL_DCHECK(renderer_);
   FXL_DCHECK(renderer_node_);
 
-  connected_output_ = output;
+  connected_output_ = nullptr;
 
   BuildConversionPipeline(
       type, renderer_->GetSupportedStreamTypes(), &graph(), decoder_factory_,
@@ -61,12 +61,12 @@
                   ? fuchsia::mediaplayer::kProblemAudioEncodingNotSupported
                   : fuchsia::mediaplayer::kProblemVideoEncodingNotSupported,
               "");
-          connected_output_ = nullptr;
           callback(Result::kUnsupportedOperation);
           return;
         }
 
         graph().ConnectOutputToNode(output, renderer_node_);
+        connected_output_ = output;
         renderer_->SetStreamType(*stream_type);
         callback(Result::kOk);
       });