diff --git a/modules/control/dbus.c b/modules/control/dbus.c
index 0b8f3923ded4832698d1d2914e44bf26ef0408ce..11349dd59a135243ee4aced33c14e4c46a8e8a24 100644
--- a/modules/control/dbus.c
+++ b/modules/control/dbus.c
@@ -99,6 +99,16 @@ DBUS_METHOD( Nothing )
REPLY_SEND;
}
+DBUS_METHOD( Quit )
+{ /* exits vlc */
+ REPLY_INIT;
+ playlist_t *p_playlist = pl_Yield( (vlc_object_t*) p_this );
+ playlist_Stop( p_playlist );
+ pl_Release( ((vlc_object_t*) p_this) );
+ ((vlc_object_t*)p_this)->b_die = VLC_TRUE;
+ REPLY_SEND;
+}
+
DBUS_METHOD( GetPlayStatus )
{ /* return a string */
REPLY_INIT;
@@ -239,6 +249,7 @@ DBUS_METHOD( handle_messages )
METHOD_FUNC( "AddMRL", AddMRL );
METHOD_FUNC( "TogglePause", TogglePause );
METHOD_FUNC( "Nothing", Nothing );
+ METHOD_FUNC( "Quit", Quit );
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
diff --git a/modules/control/dbus.h b/modules/control/dbus.h
index 533911a9d7542b96b1cfe61d0d67caec50df0dbb..c4443babba7a5e8c61b71c3c3c7bbd40ec3029a9 100644
--- a/modules/control/dbus.h
+++ b/modules/control/dbus.h
@@ -97,6 +97,7 @@ const char* psz_introspection_xml_data =
" \n"
" \n"
" \n"
+" \n"
" \n"
" \n"
"\n"