_RemoteVideoView watched liveKitServiceProvider which returns the same
keepAlive instance. When activeRoom was set after connecting, Riverpod
didn't detect the field change so the widget stayed on the null path.
Fix: also watch callControllerProvider — when state transitions from
Connecting to Active, the widget rebuilds and finds activeRoom non-null,
then ListenableBuilder takes over for participant/track changes.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>