commit eb6cd5183c1a57f0b04dcd4ec798815c30e1cfc9
parent 1dad2cf42dce31d40e7de378135336b1a41c3957
Author: Alexandre Bique <bique.alexandre@gmail.com>
Date: Mon, 12 Dec 2022 16:25:21 +0100
trigger: use event space for now
Diffstat:
2 files changed, 32 insertions(+), 18 deletions(-)
diff --git a/include/clap/events.h b/include/clap/events.h
@@ -114,10 +114,6 @@ enum {
CLAP_EVENT_MIDI, // raw midi event; clap_event_midi
CLAP_EVENT_MIDI_SYSEX, // raw midi sysex event; clap_event_midi_sysex
CLAP_EVENT_MIDI2, // raw midi 2 event; clap_event_midi2
-
- // Represents a trigger. See triggers.h
- // Uses clap_event_trigger.
- CLAP_EVENT_TRIGGER,
};
// Note on, off, end and choke events.
@@ -264,20 +260,6 @@ typedef struct clap_event_midi2 {
uint32_t data[4];
} clap_event_midi2_t;
-typedef struct clap_event_trigger {
- clap_event_header_t header;
-
- // target trigger
- clap_id trigger_id; // @ref clap_trigger_info.id
- void *cookie; // @ref clap_trigger_info.cookie
-
- // target a specific note_id, port, key and channel, -1 for global
- int32_t note_id;
- int16_t port_index;
- int16_t channel;
- int16_t key;
-} clap_event_trigger_t;
-
// Input event list, events must be sorted by time.
typedef struct clap_input_events {
void *ctx; // reserved pointer for the list
diff --git a/include/clap/ext/draft/triggers.h b/include/clap/ext/draft/triggers.h
@@ -1,6 +1,7 @@
#pragma once
#include "../../plugin.h"
+#include "../../events.h"
#include "../../string-sizes.h"
static CLAP_CONSTEXPR const char CLAP_EXT_TRIGGERS[] = "clap.triggers.draft/0";
@@ -32,6 +33,37 @@ enum {
};
typedef uint32_t clap_trigger_info_flags;
+// Given that this extension is still draft, it'll use the event-registry and its own event
+// namespace until we stabilize it.
+//
+// #include <clap/ext/event-registry.h>
+//
+// uint16_t CLAP_EXT_TRIGGER_EVENT_SPACE_ID = UINT16_MAX;
+// if (host_event_registry->query(host, CLAP_EXT_TRIGGERS, &CLAP_EXT_TRIGGER_EVENT_SPACE_ID)) {
+// /* we can use trigger events */
+// }
+//
+// /* later on */
+// clap_event_trigger ev;
+// ev.header.space_id = CLAP_EXT_TRIGGER_EVENT_SPACE_ID;
+// ev.header.type = CLAP_EVENT_TRIGGER;
+
+enum { CLAP_EVENT_TRIGGER = 0 };
+
+typedef struct clap_event_trigger {
+ clap_event_header_t header;
+
+ // target trigger
+ clap_id trigger_id; // @ref clap_trigger_info.id
+ void *cookie; // @ref clap_trigger_info.cookie
+
+ // target a specific note_id, port, key and channel, -1 for global
+ int32_t note_id;
+ int16_t port_index;
+ int16_t channel;
+ int16_t key;
+} clap_event_trigger_t;
+
/* This describes a trigger */
typedef struct clap_trigger_info {
// stable trigger identifier, it must never change.