/* LV2 Resize Port Extension * Copyright (C) 2007-2009 David Robillard * * This header is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version. * * This header is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef LV2_RESIZE_PORT_H #define LV2_RESIZE_PORT_H #include #include #include #define LV2_RESIZE_PORT_URI "http://lv2plug.in/ns/ext/resize-port" typedef void* LV2_Resize_Port_Feature_Data; typedef struct { LV2_Resize_Port_Feature_Data data; /** Resize a port buffer to at least @a size bytes. * * This function MAY return false, in which case the port buffer was * not resized and the port is still connected to the same location. * Plugins MUST gracefully handle this situation. * * This function MUST NOT be called from any context other than * the context associated with the port of the given index. * * The host MUST preserve the contents of the port buffer when * resizing. * * Plugins MAY resize a port many times in a single run callback. * Hosts SHOULD make this an inexpensive as possible (i.e. plugins * can liberally use this function in a similar way to realloc). */ bool (*resize_port)(LV2_Resize_Port_Feature_Data data, uint32_t index, size_t size); } LV2_Resize_Port_Feature; #endif /* LV2_RESIZE_PORT_H */