From: Zeeshan Ali (Khattak) Date: Fri, 25 May 2012 06:35:26 +0000 (-0700) Subject: gdk-pixbuf-2.0: Change ownership of Pixbuf.from_data.data X-Git-Tag: 0.17.1~17 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=de4fd9683767b754cd77e4cf4df0c84c67ddbade;p=thirdparty%2Fvala.git gdk-pixbuf-2.0: Change ownership of Pixbuf.from_data.data This also adds a Pixbuf.take_data which behaves like the old version. This can be helpful for avoiding unnecessary copies, but is easy to get wrong. Thanks to Patryk Zawadzki for help in finding this issue out. Fixes bug 676695. --- diff --git a/vapi/gdk-pixbuf-2.0.vapi b/vapi/gdk-pixbuf-2.0.vapi index 0a0eaacca..ee919cdf0 100644 --- a/vapi/gdk-pixbuf-2.0.vapi +++ b/vapi/gdk-pixbuf-2.0.vapi @@ -16,7 +16,7 @@ namespace Gdk { public void fill (uint32 pixel); public Gdk.Pixbuf? flip (bool horizontal); [CCode (has_construct_function = false)] - public Pixbuf.from_data ([CCode (array_length = false)] uint8[] data, Gdk.Colorspace colorspace, bool has_alpha, int bits_per_sample, int width, int height, int rowstride, Gdk.PixbufDestroyNotify? destroy_fn); + public Pixbuf.from_data ([CCode (array_length = false)] owned uint8[] data, Gdk.Colorspace colorspace, bool has_alpha, int bits_per_sample, int width, int height, int rowstride, [CCode (type = "GdkPixbufDestroyNotify")] Gdk.PixbufDestroyNotify? destroy_fn = GLib.free); [CCode (has_construct_function = false)] public Pixbuf.from_file (string filename) throws GLib.Error; [CCode (has_construct_function = false)] @@ -67,6 +67,8 @@ namespace Gdk { public Gdk.Pixbuf scale_simple (int dest_width, int dest_height, Gdk.InterpType interp_type); [CCode (has_construct_function = false)] public Pixbuf.subpixbuf (Gdk.Pixbuf src_pixbuf, int src_x, int src_y, int width, int height); + [CCode (cname = "gdk_pixbuf_new_from_data", has_construct_function = false)] + public Pixbuf.take_data ([CCode (array_length = false)] uint8[] data, Gdk.Colorspace colorspace, bool has_alpha, int bits_per_sample, int width, int height, int rowstride, [CCode (type = "GdkPixbufDestroyNotify")] Gdk.PixbufDestroyNotify? destroy_fn = null); public int bits_per_sample { get; construct; } public Gdk.Colorspace colorspace { get; construct; } public bool has_alpha { get; construct; } diff --git a/vapi/metadata/GdkPixbuf-2.0-custom.vala b/vapi/metadata/GdkPixbuf-2.0-custom.vala index b9061e0d8..30c84a319 100644 --- a/vapi/metadata/GdkPixbuf-2.0-custom.vala +++ b/vapi/metadata/GdkPixbuf-2.0-custom.vala @@ -1,5 +1,9 @@ namespace Gdk { public class Pixbuf : GLib.Object { + [CCode (has_construct_function = false)] + public Pixbuf.from_data ([CCode (array_length = false)] owned uint8[] data, Gdk.Colorspace colorspace, bool has_alpha, int bits_per_sample, int width, int height, int rowstride, [CCode (type = "GdkPixbufDestroyNotify")] Gdk.PixbufDestroyNotify? destroy_fn = GLib.free); + [CCode (has_construct_function = false, cname = "gdk_pixbuf_new_from_data")] + public Pixbuf.take_data ([CCode (array_length = false)] uint8[] data, Gdk.Colorspace colorspace, bool has_alpha, int bits_per_sample, int width, int height, int rowstride, [CCode (type = "GdkPixbufDestroyNotify")] Gdk.PixbufDestroyNotify? destroy_fn = null); [CCode (cname = "gdk_pixbuf_new_from_stream_async", finish_name = "gdk_pixbuf_new_from_stream_finish")] public static async Gdk.Pixbuf new_from_stream_async (GLib.InputStream stream, GLib.Cancellable? cancellable = null) throws GLib.Error; [CCode (cname = "gdk_pixbuf_new_from_stream_at_scale_async", finish_name = "gdk_pixbuf_new_from_stream_finish")] @@ -19,4 +23,4 @@ namespace Gdk { public delegate void PixbufDestroyNotify ([CCode (array_length = false)] uint8[] pixels); [CCode (cheader_filename = "gdk-pixbuf/gdk-pixdata.h", instance_pos = -0.9)] public delegate bool PixbufSaveFunc ([CCode (array_length_type = "gsize")] uint8[] buf) throws GLib.Error; -} \ No newline at end of file +} diff --git a/vapi/metadata/GdkPixbuf-2.0.metadata b/vapi/metadata/GdkPixbuf-2.0.metadata index e7cf2f50d..3d4e72383 100644 --- a/vapi/metadata/GdkPixbuf-2.0.metadata +++ b/vapi/metadata/GdkPixbuf-2.0.metadata @@ -5,7 +5,7 @@ Pixbuf .flip nullable .from_pixdata cheader_filename="gdk-pixbuf/gdk-pixdata.h" .from_pixdata.copy_pixels default=true - .new_from_data.data type="uint8[]" + .new_from_data skip .new_from_inline.copy_pixels default=true .new_from_stream_async skip .new_from_stream_finish skip @@ -21,7 +21,6 @@ PixbufSaveFunc skip // Upstream Pixbuf - .new_from_data.destroy_fn nullable .new_from_inline.data type="uint8[]" array_length_idx=0 .get_file_info unowned .get_file_info.width out