<div dir="ltr">There are several plugins that share limited resources, such as scintilla markers and indicators.<div><br></div><div style>At the moment there is no coordination for using those resources so plugins can interfere with one another and possibly with Geany.</div>
<div style><br></div><div style>The only common thing between plugins and Geany is Geany, so this is a proposal to add a resources management interface to Geany.</div><div style><br></div><div style>The proposed interface is below, I have tried to make it so it is easy to expand to resources that are not integers (markers and indicators are all integers)</div>
<div style><br></div><div style>enum resource_type { GEANY_RESOURCE_MARKER, GEANY_RESOURCE_INDICATOR };</div><div style>gboolean alloc_int_resource( enum resource_type, int* resource_num );</div><div style>void free_int_resource( int resource_num );</div>
<div style><br></div><div style>This allows extra resources to be added without ABI changes (so long as they are added to the end of the enum).</div><div style><br></div><div style>If (when) other types of resource need managing then extra functions can be added again without breaking the ABI.</div>
<div style><br></div><div style>Automatic release is not suggested because that prevents use of RAII and similar management schemes in C++ or GC for other plugin languages.  For plain C plugins just call free_int_resource in the plugin_cleanup function.</div>
<div style><br></div><div style>Any simpler, more flexible suggestions?</div><div style><br></div><div style>Cheers<br>Lex</div></div>