"alsaseq_queue_tempo_set_skew";
"alsaseq_queue_timer_get_type";
+ "alsaseq_queue_timer_new";
"alsaseq_queue_timer_get_alsa_data";
"alsaseq_queue_timer_set_alsa_data";
/**
* SECTION: queue-timer
* @Title: ALSASeqQueueTimer
- * @Short_description: A GObject-derived abstract object to represent timer for
- * queue
+ * @Short_description: A GObject-derived object to represent timer for queue
*
- * A #ALSASeqQueueTimer is a GObject-derived abstract object to represent common
- * properties and methods of timer for queue. Applications can use derived
- * object; ALSASeqQueueTimerAlsa.
+ * A #ALSASeqQueueTimer is a GObject-derived object to represent the information
+ * of timer which drives the queue.
*
* The object wraps 'struct snd_seq_queue_timer' in UAPI of Linux sound subsystem.
*/
struct _ALSASeqQueueTimerPrivate {
struct snd_seq_queue_timer timer;
};
-G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(ALSASeqQueueTimer, alsaseq_queue_timer, G_TYPE_OBJECT)
+G_DEFINE_TYPE_WITH_PRIVATE(ALSASeqQueueTimer, alsaseq_queue_timer, G_TYPE_OBJECT)
enum seq_queue_timer_prop_type {
SEQ_QUEUE_TIMER_PROP_QUEUE_ID = 1,
return;
}
+/**
+ * alsaseq_queue_timer_new:
+ *
+ * Allocate and return the instance of #ALSASeqQueueTimer.
+ *
+ * Returns: the instance of #ALSASeqQueueTimer.
+ */
+ALSASeqQueueTimer *alsaseq_queue_timer_new()
+{
+ return g_object_new(ALSASEQ_TYPE_QUEUE_TIMER, NULL);
+}
+
/**
* alsaseq_queue_timer_get_alsa_data:
* @self: A #ALSASeqQueueTimer.
GType alsaseq_queue_timer_get_type() G_GNUC_CONST;
+ALSASeqQueueTimer *alsaseq_queue_timer_new();
+
void alsaseq_queue_timer_get_alsa_data(ALSASeqQueueTimer *self,
const ALSASeqQueueTimerDataAlsa **data);
void alsaseq_queue_timer_set_alsa_data(ALSASeqQueueTimer *self,
g_return_if_fail(ALSASEQ_IS_QUEUE_TIMER(queue_timer));
priv = alsaseq_user_client_get_instance_private(self);
- if (ALSASEQ_IS_QUEUE_TIMER_ALSA(queue_timer)) {
+ seq_queue_timer_refer_private(queue_timer, &timer);
+
+ switch (timer->type) {
+ case SNDRV_SEQ_TIMER_ALSA:
+ break;
+ case SNDRV_SEQ_TIMER_MIDI_CLOCK:
+ case SNDRV_SEQ_TIMER_MIDI_TICK:
+ default:
generate_error(error, EINVAL);
return;
}
- seq_queue_timer_refer_private(queue_timer, &timer);
timer->queue = queue_id;
if (ioctl(priv->fd, SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER, timer) < 0)
generate_error(error, errno);
GError **error)
{
ALSASeqUserClientPrivate *priv;
- struct snd_seq_queue_timer timer, *timer_ptr;
+ struct snd_seq_queue_timer *timer;
g_return_if_fail(ALSASEQ_IS_USER_CLIENT(self));
g_return_if_fail(queue_timer != NULL);
priv = alsaseq_user_client_get_instance_private(self);
- timer.queue = queue_id;
- if (ioctl(priv->fd, SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER, &timer) < 0) {
+ *queue_timer = g_object_new(ALSASEQ_TYPE_QUEUE_TIMER, NULL);
+ seq_queue_timer_refer_private(*queue_timer, &timer);
+
+ timer->queue = queue_id;
+ if (ioctl(priv->fd, SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER, timer) < 0) {
generate_error(error, errno);
return;
}
- switch (timer.type) {
+ switch (timer->type) {
case SNDRV_SEQ_TIMER_ALSA:
- *queue_timer = ALSASEQ_QUEUE_TIMER(alsaseq_queue_timer_alsa_new());
break;
case SNDRV_SEQ_TIMER_MIDI_CLOCK:
case SNDRV_SEQ_TIMER_MIDI_TICK:
default:
// Not available.
+ g_object_unref(*queue_timer);
+ *queue_timer = NULL;
generate_error(error, ENXIO);
return;
}
-
- seq_queue_timer_refer_private(*queue_timer, &timer_ptr);
- *timer_ptr = timer;
}
/**
#include <seq/queue-info.h>
#include <seq/queue-tempo.h>
#include <seq/queue-timer.h>
-#include <seq/queue-timer-alsa.h>
#include <seq/remove-filter.h>
#include <seq/event-cntr.h>
gi.require_version('ALSASeq', '0.0')
from gi.repository import ALSASeq
-target = ALSASeq.QueueTimer
+target = ALSASeq.QueueTimer()
props = (
'queue-id',
'type',
)
methods = (
+ 'new',
'get_alsa_data',
'set_alsa_data',
)