- dbus_message_unref( p_test_reply );
- msg_Warn( p_libvlc,
- "Another vlc instance exists: will now exit");
-
- int i_input;
- DBusMessage* p_dbus_msg;
- DBusMessageIter dbus_args;
- DBusPendingCall* p_dbus_pending;
- dbus_bool_t b_play;
-
- for( i_input = optind;i_input < i_argc;i_input++ )
- {
- msg_Dbg( p_libvlc, "Give %s to other vlc\n",
- ppsz_argv[i_input] );
-
- p_dbus_msg = dbus_message_new_method_call(
- VLC_DBUS_SERVICE, VLC_DBUS_OBJECT_PATH,
- VLC_DBUS_INTERFACE, "AddMRL" );
-
- if ( NULL == p_dbus_msg )
- {
- msg_Err( p_libvlc, "D-Bus problem" );
- system_End( p_libvlc );
- exit( 0 );
- }
-
- /* append MRLs */
- dbus_message_iter_init_append( p_dbus_msg,
- &dbus_args );
- if ( !dbus_message_iter_append_basic( &dbus_args,
- DBUS_TYPE_STRING,
- &ppsz_argv[i_input] ) )
- {
- msg_Err( p_libvlc, "Out of memory" );
- dbus_message_unref( p_dbus_msg );
- system_End( p_libvlc );
- exit( 0 );
- }
- b_play = TRUE;
- if( config_GetInt( p_libvlc, "playlist-enqueue" ) )
- b_play = FALSE;
- if ( !dbus_message_iter_append_basic( &dbus_args,
- DBUS_TYPE_BOOLEAN, &b_play ) )
- {
- msg_Err( p_libvlc, "Out of memory" );
- dbus_message_unref( p_dbus_msg );
- system_End( p_libvlc );
- exit( 0 );
- }
-
- /* send message and get a handle for a reply */
- if ( !dbus_connection_send_with_reply ( p_conn,
- p_dbus_msg, &p_dbus_pending, -1 ) )
- {
- msg_Err( p_libvlc, "D-Bus problem" );
- dbus_message_unref( p_dbus_msg );
- system_End( p_libvlc );
- exit( 0 );
- }
-
- if ( NULL == p_dbus_pending )
- {
- msg_Err( p_libvlc, "D-Bus problem" );
- dbus_message_unref( p_dbus_msg );
- system_End( p_libvlc );
- exit( 0 );
- }
- dbus_connection_flush( p_conn );
- dbus_message_unref( p_dbus_msg );
- /* block until we receive a reply */
- dbus_pending_call_block( p_dbus_pending );
- dbus_pending_call_unref( p_dbus_pending );
- } /* processes all command line MRLs */
-
- /* bye bye */