]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
rawmidi: stream_pair: add class virtual method to handle disconnection of sound card
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Sun, 1 Dec 2019 03:02:00 +0000 (12:02 +0900)
committer坂本 貴史 <o-takashi@sakamocchi.jp>
Sun, 12 Apr 2020 05:30:33 +0000 (14:30 +0900)
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
src/rawmidi/stream-pair.c
src/rawmidi/stream-pair.h
tests/alsarawmidi-stream-pair

index 74596158a848726a0cfe9eefcbec823e69cab8e5..36ae473544a5cd3b88c775c49dc9bf15da075227 100644 (file)
@@ -111,7 +111,7 @@ static void alsarawmidi_stream_pair_class_init(ALSARawmidiStreamPairClass *klass
         g_signal_new("handle-disconnection",
                      G_OBJECT_CLASS_TYPE(klass),
                      G_SIGNAL_RUN_LAST,
-                     0,
+                     G_STRUCT_OFFSET(ALSARawmidiStreamPairClass, handle_disconnection),
                      NULL, NULL,
                      g_cclosure_marshal_VOID__VOID,
                      G_TYPE_NONE, 0, G_TYPE_NONE, 0);
index a5f2afa57281b429139f82aae4f643c0532b2bb8..04c8e755e274f3d53ff655931e099e607ec99b2e 100644 (file)
@@ -54,6 +54,17 @@ struct _ALSARawmidiStreamPairClass {
      * When any input message in available, this event is emit.
      */
     void (*handle_messages)(ALSARawmidiStreamPair *self);
+
+    /**
+     * ALSARawmidiStreamPairClass::handle_disconnection:
+     * @self: A #ALSARawmidiStreamPair.
+     *
+     * When the sound card is not available anymore due to unbinding driver or
+     * hot unplugging, this signal is emit. The owner of this object should
+     * call g_object_free() as quickly as possible to release ALSA rawmidi
+     * character device.
+     */
+    void (*handle_disconnection)(ALSARawmidiStreamPair *self);
 };
 
 GType alsarawmidi_stream_pair_get_type(void) G_GNUC_CONST;
index 2751836550a53361e82c780f743f14ecc488c3d3..b75d4279cafc9deb61579b197b49550149a17d82 100644 (file)
@@ -25,6 +25,7 @@ methods = (
     'drop_substream',
     'create_source',
     'do_handle_messages',
+    'do_handle_disconnection',
 )
 signals = (
     'handle-messages',