@@ -13,6 +13,7 @@ static void paSinkInfoCallback(pa_context *c, const pa_sink_info *i, int eol, vo
1313
1414 FFSoundDevice * device = ffListAdd (userdata );
1515 ffStrbufInitS (& device -> identifier , i -> name );
16+ ffStrbufInitS (& device -> platformApi , "PulseAudio" );
1617 ffStrbufTrimRightSpace (& device -> identifier );
1718 ffStrbufInitS (& device -> name , i -> description );
1819 ffStrbufTrimRightSpace (& device -> name );
@@ -22,20 +23,24 @@ static void paSinkInfoCallback(pa_context *c, const pa_sink_info *i, int eol, vo
2223 device -> main = false;
2324}
2425
25- static void paServerInfoCallback (pa_context * c , const pa_server_info * i , void * userdata )
26+ static void paServerInfoCallback (FF_MAYBE_UNUSED pa_context * c , const pa_server_info * i , void * userdata )
2627{
27- FF_UNUSED ( c ) ;
28+ if (! i ) return ;
2829
29- if (!i )
30- return ;
30+ FF_STRBUF_AUTO_DESTROY api = ffStrbufCreate ();
31+ const char * realServer = strstr (i -> server_name , "(on " );
32+ if (realServer )
33+ {
34+ ffStrbufSetS (& api , realServer + strlen ("(on " ));
35+ ffStrbufTrimRight (& api , ')' );
36+ }
37+ else
38+ ffStrbufSetF (& api , "%s %s" , i -> server_name , i -> server_version );
3139
3240 FF_LIST_FOR_EACH (FFSoundDevice , device , * (FFlist * )userdata )
3341 {
34- if (ffStrbufEqualS (& device -> identifier , i -> default_sink_name ))
35- {
36- device -> main = true;
37- break ;
38- }
42+ device -> main = ffStrbufEqualS (& device -> identifier , i -> default_sink_name );
43+ ffStrbufSet (& device -> platformApi , & api );
3944 }
4045}
4146
0 commit comments