From a6acef5894a5086cb9e8952e245bcf959b374f50 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 19 Mar 2013 02:46:10 +0000 Subject: Add UI idle interface. --- lv2/lv2plug.in/ns/extensions/ui/lv2-ui.doap.ttl | 8 ++++++++ lv2/lv2plug.in/ns/extensions/ui/manifest.ttl | 2 +- lv2/lv2plug.in/ns/extensions/ui/ui.h | 19 +++++++++++++++++++ lv2/lv2plug.in/ns/extensions/ui/ui.ttl | 14 ++++++++++++++ 4 files changed, 42 insertions(+), 1 deletion(-) (limited to 'lv2/lv2plug.in') diff --git a/lv2/lv2plug.in/ns/extensions/ui/lv2-ui.doap.ttl b/lv2/lv2plug.in/ns/extensions/ui/lv2-ui.doap.ttl index 3dbabeb..8d5a81d 100644 --- a/lv2/lv2plug.in/ns/extensions/ui/lv2-ui.doap.ttl +++ b/lv2/lv2plug.in/ns/extensions/ui/lv2-ui.doap.ttl @@ -13,6 +13,14 @@ doap:developer ; doap:maintainer ; doap:release [ + doap:revision "2.13" ; + doap:created "2013-03-18" ; + dcs:changeset [ + dcs:item [ + rdfs:label "Add idle interface so native UIs and foreign toolkits can drive their event loops." + ] + ] + ] , [ doap:revision "2.12" ; doap:created "2012-12-01" ; doap:file-release ; diff --git a/lv2/lv2plug.in/ns/extensions/ui/manifest.ttl b/lv2/lv2plug.in/ns/extensions/ui/manifest.ttl index 404cbb4..3071a59 100644 --- a/lv2/lv2plug.in/ns/extensions/ui/manifest.ttl +++ b/lv2/lv2plug.in/ns/extensions/ui/manifest.ttl @@ -4,5 +4,5 @@ a lv2:Specification ; lv2:minorVersion 2 ; - lv2:microVersion 12 ; + lv2:microVersion 13 ; rdfs:seeAlso . \ No newline at end of file diff --git a/lv2/lv2plug.in/ns/extensions/ui/ui.h b/lv2/lv2plug.in/ns/extensions/ui/ui.h index 62f4c93..2a9b28a 100644 --- a/lv2/lv2plug.in/ns/extensions/ui/ui.h +++ b/lv2/lv2plug.in/ns/extensions/ui/ui.h @@ -41,6 +41,7 @@ #define LV2_UI__X11UI LV2_UI_PREFIX "X11UI" #define LV2_UI__binary LV2_UI_PREFIX "binary" #define LV2_UI__fixedSize LV2_UI_PREFIX "fixedSize" +#define LV2_UI__idleInterface LV2_UI_PREFIX "idleInterface" #define LV2_UI__noUserResize LV2_UI_PREFIX "noUserResize" #define LV2_UI__notifyType LV2_UI_PREFIX "notifyType" #define LV2_UI__parent LV2_UI_PREFIX "parent" @@ -337,6 +338,24 @@ typedef struct _LV2UI_Touch { bool grabbed); } LV2UI_Touch; +/** + UI Idle Feature (LV2_UI__idle) + + This feature is an addition to the UI API that provides a callback for the + host to call rapidly, e.g. to drive the idle callback of a toolkit. +*/ +typedef struct _LV2UI_Idle_Interface { + /** + Run a single iteration of the UI's idle loop. + + This will be called "frequently" in the UI thread at a rate appropriate + for a toolkit main loop. There are no precise timing guarantees. + + @return 0 on success, or anything else to stop being called. + */ + int (*idle)(LV2UI_Handle ui); +} LV2UI_Idle_Interface; + /** Peak data for a slice of time, the update format for ui:peakProtocol. */ diff --git a/lv2/lv2plug.in/ns/extensions/ui/ui.ttl b/lv2/lv2plug.in/ns/extensions/ui/ui.ttl index 84a9761..70cc93f 100644 --- a/lv2/lv2plug.in/ns/extensions/ui/ui.ttl +++ b/lv2/lv2plug.in/ns/extensions/ui/ui.ttl @@ -316,6 +316,20 @@ plugin UI. This feature corresponds to the LV2UI_Touch struct, which should be passed with the URI LV2_UI__touch.

""" . +ui:idleInterace + a lv2:Feature , + lv2:ExtensionData ; + lv2:documentation """ +

A feature that provides a callback for the host to call rapidly to drive the +UI. To support this feature, the UI should list it as a lv2:optionalFeature or +lv2:requiredFeature in its data, and also as lv2:extensionData. When the UI's +extension_data() is called with this URI (LV2_UI__idleInterface), it should +return a pointer to an LV2_UI_Idle_Interface.

+ +

To indicate support, the host should pass a feature to instantiate() with +this URI, with NULL for data.

+""" . + ui:protocol a rdf:Property ; rdfs:domain ui:PortNotification ; -- cgit v1.2.1