[Swfdec-commits] 15 commits - swfdec-gtk/swfdec_gtk_loader.c swfdec-gtk/swfdec_gtk_socket.c swfdec/swfdec_audio_event.c swfdec/swfdec_bits.c swfdec/swfdec_buffer.c swfdec/swfdec_buffer.h swfdec/swfdec_codec_adpcm.c swfdec/swfdec_codec_audio.c swfdec/swfdec_codec_ffmpeg.c swfdec/swfdec_codec_gst.c swfdec/swfdec_codec_mad.c swfdec/swfdec_image.c swfdec/swfdec_player.c swfdec/swfdec_policy_file.c swfdec/swfdec_script.c swfdec/swfdec_socket.c swfdec/swfdec_swf_decoder.c swfdec/swfdec_system_security.c swfdec/swfdec_url.c test/sound test/swfdec_test_buffer.c test/swfdec_test_plugin.h test/swfdec_test_socket.c test/swfdec_test_test.c tools/swfdec-extract.c tools/swfdec_out.c tools/swfedit_file.c tools/swfedit_tag.c tools/swfedit_token.c vivified/core
Benjamin Otte
company at kemper.freedesktop.org
Tue Feb 5 11:32:54 PST 2008
swfdec-gtk/swfdec_gtk_loader.c | 13 ---
swfdec-gtk/swfdec_gtk_socket.c | 2
swfdec/swfdec_audio_event.c | 4 -
swfdec/swfdec_bits.c | 4 -
swfdec/swfdec_buffer.c | 132 ++++++++++++++++------------------------
swfdec/swfdec_buffer.h | 12 ++-
swfdec/swfdec_codec_adpcm.c | 2
swfdec/swfdec_codec_audio.c | 2
swfdec/swfdec_codec_ffmpeg.c | 6 -
swfdec/swfdec_codec_gst.c | 25 +------
swfdec/swfdec_codec_mad.c | 9 --
swfdec/swfdec_image.c | 11 +--
swfdec/swfdec_player.c | 7 --
swfdec/swfdec_policy_file.c | 24 ++++---
swfdec/swfdec_script.c | 2
swfdec/swfdec_socket.c | 28 ++++++++
swfdec/swfdec_swf_decoder.c | 2
swfdec/swfdec_system_security.c | 18 +++++
swfdec/swfdec_url.c | 3
test/sound/sound.c | 2
test/swfdec_test_buffer.c | 10 ---
test/swfdec_test_plugin.h | 52 +++++++--------
test/swfdec_test_socket.c | 4 -
test/swfdec_test_test.c | 2
tools/swfdec-extract.c | 6 -
tools/swfdec_out.c | 4 -
tools/swfedit_file.c | 6 -
tools/swfedit_tag.c | 2
tools/swfedit_token.c | 6 -
vivified/core/vivi_ming.c | 2
30 files changed, 196 insertions(+), 206 deletions(-)
New commits:
commit 5584d63458350646be8cf51ea2108af034e187cb
Author: Benjamin Otte <otte at gnome.org>
Date: Tue Feb 5 13:50:02 2008 +0100
hacks come back to bite you
note to self: remember that, and code properly in the future :/
diff --git a/swfdec/swfdec_image.c b/swfdec/swfdec_image.c
index 54e84ca..3270756 100644
--- a/swfdec/swfdec_image.c
+++ b/swfdec/swfdec_image.c
@@ -465,11 +465,12 @@ swfdec_image_lossless_load (SwfdecImage *image)
p++;
}
}
- /* FIXME: this can fail if the returned buffer does not contain malloc'd
- * data at some point in the future */
- buffer->data = NULL;
- buffer->length = 0;
- swfdec_buffer_unref (buffer);
+ image->surface = cairo_image_surface_create_for_data (data,
+ have_alpha ? CAIRO_FORMAT_ARGB32 : CAIRO_FORMAT_RGB24,
+ image->width, image->height, image->width * 4);
+ cairo_surface_set_user_data (image->surface, &key, buffer,
+ (cairo_destroy_func_t) swfdec_buffer_unref);
+ return;
} else {
SWFDEC_ERROR ("unknown lossless image format %u", format);
return;
commit 52dd3dc5eea837d2c2ce6536e2a9f9ed3ffc7981
Author: Benjamin Otte <otte at gnome.org>
Date: Tue Feb 5 13:46:57 2008 +0100
use GSlice for buffers
diff --git a/swfdec/swfdec_buffer.c b/swfdec/swfdec_buffer.c
index 044c6a5..46befc7 100644
--- a/swfdec/swfdec_buffer.c
+++ b/swfdec/swfdec_buffer.c
@@ -159,7 +159,7 @@ swfdec_buffer_new_full (unsigned char *data, gsize size,
{
SwfdecBuffer *buffer;
- buffer = g_new0 (SwfdecBuffer, 1);
+ buffer = g_slice_new (SwfdecBuffer);
buffer->ref_count = 1;
buffer->data = data;
buffer->length = size;
@@ -288,7 +288,7 @@ swfdec_buffer_unref (SwfdecBuffer * buffer)
if (buffer->ref_count == 0) {
if (buffer->free)
buffer->free (buffer->priv, buffer->data);
- g_free (buffer);
+ g_slice_free (SwfdecBuffer, buffer);
}
}
commit 8dcbe532bb2634c49646ba010684e23221fd220a
Author: Benjamin Otte <otte at gnome.org>
Date: Tue Feb 5 13:43:29 2008 +0100
update tests to new buffer API
diff --git a/test/sound/sound.c b/test/sound/sound.c
index ab8f566..07e2148 100644
--- a/test/sound/sound.c
+++ b/test/sound/sound.c
@@ -193,7 +193,7 @@ render_all_streams (SwfdecPlayer *player, guint msecs, guint n_samples, TestData
for (walk = data->streams; walk; walk = walk->next) {
TestStream *stream = walk->data;
- SwfdecBuffer *buffer = swfdec_buffer_new_and_alloc0 (n_samples * 4);
+ SwfdecBuffer *buffer = swfdec_buffer_new0 (n_samples * 4);
swfdec_audio_render (stream->audio, (gint16 *) buffer->data, 0, n_samples);
swfdec_buffer_queue_push (stream->queue, buffer);
}
commit 04852698c9a0df84445450c26ef84950f4d242fd
Author: Benjamin Otte <otte at gnome.org>
Date: Tue Feb 5 13:43:18 2008 +0100
those checks aren't correct anymore
diff --git a/swfdec/swfdec_buffer.c b/swfdec/swfdec_buffer.c
index 040fb7a..044c6a5 100644
--- a/swfdec/swfdec_buffer.c
+++ b/swfdec/swfdec_buffer.c
@@ -159,9 +159,6 @@ swfdec_buffer_new_full (unsigned char *data, gsize size,
{
SwfdecBuffer *buffer;
- g_return_val_if_fail (data != NULL, NULL);
- g_return_val_if_fail (size > 0, NULL);
-
buffer = g_new0 (SwfdecBuffer, 1);
buffer->ref_count = 1;
buffer->data = data;
commit eb3bbc372f6f538685c7eb3095af2cfa0718fbee
Author: Benjamin Otte <otte at gnome.org>
Date: Tue Feb 5 13:41:43 2008 +0100
fix the rest of the buffer users
diff --git a/test/swfdec_test_buffer.c b/test/swfdec_test_buffer.c
index e05869b..34fb812 100644
--- a/test/swfdec_test_buffer.c
+++ b/test/swfdec_test_buffer.c
@@ -210,24 +210,20 @@ swfdec_test_buffer_from_args (SwfdecAsContext *cx, guint argc, SwfdecAsValue *ar
if (SWFDEC_IS_TEST_BUFFER (o))
b = swfdec_buffer_ref (SWFDEC_TEST_BUFFER (o)->buffer);
} else if (SWFDEC_AS_VALUE_IS_NUMBER (&argv[i])) {
- b = swfdec_buffer_new_and_alloc (1);
+ b = swfdec_buffer_new (1);
b->data[0] = swfdec_as_value_to_integer (cx, &argv[i]);
}
if (b == NULL) {
const char *s = swfdec_as_value_to_string (cx, &argv[i]);
gsize len = strlen (s);
/* no terminating 0 byte on purpose here - use new Buffer (string, 0); to get that */
- b = swfdec_buffer_new_and_alloc (len);
+ b = swfdec_buffer_new (len);
memcpy (b->data, s, len);
}
swfdec_buffer_queue_push (queue, b);
}
i = swfdec_buffer_queue_get_depth (queue);
- if (i) {
- buffer = swfdec_buffer_queue_pull (queue, i);
- } else {
- buffer = swfdec_buffer_new ();
- }
+ buffer = swfdec_buffer_queue_pull (queue, i);
swfdec_buffer_queue_unref (queue);
return buffer;
diff --git a/test/swfdec_test_socket.c b/test/swfdec_test_socket.c
index 8b1c070..cad98f4 100644
--- a/test/swfdec_test_socket.c
+++ b/test/swfdec_test_socket.c
@@ -190,7 +190,7 @@ swfdec_test_socket_receive (SwfdecAsContext *cx, SwfdecAsObject *object, guint a
}
swfdec_test_socket_process (sock);
if (len > 0) {
- buffer = swfdec_buffer_new_and_alloc (len);
+ buffer = swfdec_buffer_new (len);
if (soup_socket_read (sock->socket, buffer->data, buffer->length, &len,
NULL, &error) != SOUP_SOCKET_OK) {
swfdec_test_throw (cx, "%s", error->message);
@@ -206,7 +206,7 @@ swfdec_test_socket_receive (SwfdecAsContext *cx, SwfdecAsObject *object, guint a
SwfdecBufferQueue *queue = swfdec_buffer_queue_new ();
SoupSocketIOStatus status = SOUP_SOCKET_OK;
while (status == SOUP_SOCKET_OK) {
- buffer = swfdec_buffer_new_and_alloc (128);
+ buffer = swfdec_buffer_new (128);
status = soup_socket_read (sock->socket, buffer->data, 128, &
buffer->length, NULL, &error);
if (status != SOUP_SOCKET_OK && status != SOUP_SOCKET_WOULD_BLOCK) {
diff --git a/test/swfdec_test_test.c b/test/swfdec_test_test.c
index e056be6..c38a7f8 100644
--- a/test/swfdec_test_test.c
+++ b/test/swfdec_test_test.c
@@ -63,7 +63,7 @@ swfdec_test_test_trace (SwfdecTestPlugin *plugin, const char *message)
gsize len = strlen (message);
SwfdecBuffer *buffer;
- buffer = swfdec_buffer_new_and_alloc (len + 1);
+ buffer = swfdec_buffer_new (len + 1);
memcpy (buffer->data, message, len);
buffer->data[len] = '\n';
swfdec_buffer_queue_push (test->trace, buffer);
diff --git a/tools/swfdec-extract.c b/tools/swfdec-extract.c
index b233818..1e57034 100644
--- a/tools/swfdec-extract.c
+++ b/tools/swfdec-extract.c
@@ -46,7 +46,7 @@
static SwfdecBuffer *
encode_wav (SwfdecBuffer *buffer, SwfdecAudioFormat format)
{
- SwfdecBuffer *wav = swfdec_buffer_new_and_alloc (buffer->length + 44);
+ SwfdecBuffer *wav = swfdec_buffer_new (buffer->length + 44);
unsigned char *data;
guint i;
@@ -124,9 +124,7 @@ export_sprite_sound (SwfdecSprite *sprite, const char *filename)
i = 4096;
queue = swfdec_buffer_queue_new ();
while (i > 0) {
- buffer = swfdec_buffer_new ();
- buffer->data = g_malloc0 (i * 4);
- buffer->length = i * 4;
+ buffer = swfdec_buffer_new0 (i * 4);
#if 0
if (i > 1234) {
swfdec_audio_render (audio, (gint16 *) buffer->data, 0, 1234);
diff --git a/tools/swfdec_out.c b/tools/swfdec_out.c
index ecf5a83..0684ce1 100644
--- a/tools/swfdec_out.c
+++ b/tools/swfdec_out.c
@@ -57,9 +57,7 @@ swfdec_out_close (SwfdecOut *out)
swfdec_out_syncbits (out);
- buffer = swfdec_buffer_new ();
- buffer->data = out->data;
- buffer->length = out->ptr - out->data;
+ buffer = swfdec_buffer_new_for_data (out->data, out->ptr - out->data);
g_free (out);
diff --git a/tools/swfedit_file.c b/tools/swfedit_file.c
index 22684a3..5883d46 100644
--- a/tools/swfedit_file.c
+++ b/tools/swfedit_file.c
@@ -65,7 +65,7 @@ swfenc_file_inflate (SwfdecBits *bits, guint size)
encoded = swfdec_bits_get_buffer (bits, -1);
if (encoded == NULL)
return NULL;
- decoded = swfdec_buffer_new_and_alloc (size);
+ decoded = swfdec_buffer_new (size);
z.zalloc = zalloc;
z.zfree = zfree;
z.opaque = NULL;
@@ -155,7 +155,7 @@ swfedit_file_parse (SwfeditFile *file, SwfdecBits *bits, GError **error)
if (tag_len > 0)
buffer = swfdec_bits_get_buffer (bits, tag_len);
else
- buffer = swfdec_buffer_new ();
+ buffer = swfdec_buffer_new (0);
if (buffer == NULL) {
g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
"Invalid contents in file");
@@ -245,7 +245,7 @@ swfedit_file_write (SwfeditFile *file)
swfdec_buffer_queue_push (queue, buffer);
}
/* write closing tag */
- buffer = swfdec_buffer_new_and_alloc0 (2);
+ buffer = swfdec_buffer_new0 (2);
swfdec_buffer_queue_push (queue, buffer);
/* FIXME: implement compression */
diff --git a/tools/swfedit_tag.c b/tools/swfedit_tag.c
index 868632c..ccd3837 100644
--- a/tools/swfedit_tag.c
+++ b/tools/swfedit_tag.c
@@ -63,7 +63,7 @@ swfedit_binary_read (SwfeditToken *token, SwfdecBits *bits, gconstpointer hint)
{
SwfdecBuffer *buffer = swfdec_bits_get_buffer (bits, -1);
if (buffer == NULL)
- buffer = swfdec_buffer_new ();
+ buffer = swfdec_buffer_new (0);
return buffer;
}
diff --git a/tools/swfedit_token.c b/tools/swfedit_token.c
index 11bedfc..587e831 100644
--- a/tools/swfedit_token.c
+++ b/tools/swfedit_token.c
@@ -61,7 +61,7 @@ swfedit_parse_hex (const char *s, guint *result)
static gpointer
swfedit_binary_new (void)
{
- return swfdec_buffer_new ();
+ return swfdec_buffer_new (0);
}
static gboolean
@@ -81,9 +81,7 @@ swfedit_binary_from_string (const char *s, gpointer* result)
while (g_ascii_isspace (*s)) s++;
} while (*s != '\0');
if (*s == '\0') {
- SwfdecBuffer *buffer = swfdec_buffer_new ();
- buffer->length = array->len;
- buffer->data = array->data;
+ SwfdecBuffer *buffer = swfdec_buffer_new_for_data (array->data, array->len);
g_byte_array_free (array, FALSE);
*result = buffer;
return TRUE;
diff --git a/vivified/core/vivi_ming.c b/vivified/core/vivi_ming.c
index 7478fac..a126455 100644
--- a/vivified/core/vivi_ming.c
+++ b/vivified/core/vivi_ming.c
@@ -101,7 +101,7 @@ vivi_ming_compile (const char *code, char **error)
*error = vivi_ming_get_error ();
script = NULL;
} else {
- buffer = swfdec_buffer_new_and_alloc (len);
+ buffer = swfdec_buffer_new (len);
memcpy (buffer->data, data, len);
script = swfdec_script_new (buffer, "compiled script", 8);
}
commit 5c96fd291083c0bf37ce0a78290a65300fdcdbe1
Author: Benjamin Otte <otte at gnome.org>
Date: Tue Feb 5 13:23:31 2008 +0100
rework buffer allocation function API
diff --git a/swfdec-gtk/swfdec_gtk_loader.c b/swfdec-gtk/swfdec_gtk_loader.c
index 8545625..76155e8 100644
--- a/swfdec-gtk/swfdec_gtk_loader.c
+++ b/swfdec-gtk/swfdec_gtk_loader.c
@@ -87,12 +87,6 @@ swfdec_gtk_loader_ensure_open (SwfdecGtkLoader *gtk)
}
static void
-swfdec_gtk_loader_free_soup_buffer (unsigned char *data, gpointer chunk)
-{
- soup_buffer_free (chunk);
-}
-
-static void
swfdec_gtk_loader_push (SoupMessage *msg, SoupBuffer *chunk, gpointer loader)
{
SwfdecGtkLoader *gtk = SWFDEC_GTK_LOADER (loader);
@@ -102,7 +96,7 @@ swfdec_gtk_loader_push (SoupMessage *msg, SoupBuffer *chunk, gpointer loader)
swfdec_gtk_loader_ensure_open (gtk);
buffer = swfdec_buffer_new_full ((unsigned char *) chunk->data, chunk->length,
- swfdec_gtk_loader_free_soup_buffer, chunk);
+ (SwfdecBufferFreeFunc) soup_buffer_free, chunk);
swfdec_stream_push (loader, buffer);
}
diff --git a/swfdec-gtk/swfdec_gtk_socket.c b/swfdec-gtk/swfdec_gtk_socket.c
index 8385cf1..a4d85e0 100644
--- a/swfdec-gtk/swfdec_gtk_socket.c
+++ b/swfdec-gtk/swfdec_gtk_socket.c
@@ -95,7 +95,7 @@ swfdec_gtk_socket_do_read (SoupSocket *sock, SwfdecGtkSocket *gtk)
GError *error = NULL;
do {
- buffer = swfdec_buffer_new_and_alloc (SWFDEC_GTK_SOCKET_BLOCK_SIZE);
+ buffer = swfdec_buffer_new (SWFDEC_GTK_SOCKET_BLOCK_SIZE);
status = soup_socket_read (sock, buffer, SWFDEC_GTK_SOCKET_BLOCK_SIZE,
&len, NULL, &error);
buffer->length = len;
diff --git a/swfdec/swfdec_audio_event.c b/swfdec/swfdec_audio_event.c
index fa43359..d7ab2f5 100644
--- a/swfdec/swfdec_audio_event.c
+++ b/swfdec/swfdec_audio_event.c
@@ -173,7 +173,7 @@ swfdec_audio_event_decode (SwfdecAudioEvent *event)
if (event->decoded == NULL) {
SWFDEC_INFO ("Could not decode audio. Will assume %u samples of silence instead.",
event->sound->n_samples);
- event->decoded = swfdec_buffer_new_and_alloc0 (event->sound->n_samples / 4);
+ event->decoded = swfdec_buffer_new0 (event->sound->n_samples / 4);
event->decoded_format = swfdec_audio_format_new (5512, 1, FALSE);
} else {
swfdec_buffer_ref (event->decoded);
@@ -191,7 +191,7 @@ swfdec_audio_event_decode (SwfdecAudioEvent *event)
SWFDEC_WARNING ("start sample %u > total number of samples %"G_GSIZE_FORMAT,
event->start_sample / granule, event->decoded->length / bytes_per_sample);
swfdec_buffer_unref (event->decoded);
- event->decoded = swfdec_buffer_new ();
+ event->decoded = swfdec_buffer_new (0);
} else {
SwfdecBuffer *sub = swfdec_buffer_new_subbuffer (event->decoded,
skip, event->decoded->length - skip);
diff --git a/swfdec/swfdec_bits.c b/swfdec/swfdec_bits.c
index 1cf166d..bf1e29b 100644
--- a/swfdec/swfdec_bits.c
+++ b/swfdec/swfdec_bits.c
@@ -647,7 +647,7 @@ swfdec_bits_get_buffer (SwfdecBits *bits, int len)
if (bits->buffer) {
buffer = swfdec_buffer_new_subbuffer (bits->buffer, bits->ptr - bits->buffer->data, len);
} else {
- buffer = swfdec_buffer_new_and_alloc (len);
+ buffer = swfdec_buffer_new (len);
memcpy (buffer->data, bits->ptr, len);
}
bits->ptr += len;
@@ -713,7 +713,7 @@ swfdec_bits_decompress (SwfdecBits *bits, int compressed, int decompressed)
SWFDEC_ERROR ("Error initialising zlib: %d %s", result, z.msg ? z.msg : "");
goto fail;
}
- buffer = swfdec_buffer_new_and_alloc (decompressed > 0 ? decompressed : compressed * 2);
+ buffer = swfdec_buffer_new (decompressed > 0 ? decompressed : compressed * 2);
z.next_out = buffer->data;
z.avail_out = buffer->length;
while (TRUE) {
diff --git a/swfdec/swfdec_buffer.c b/swfdec/swfdec_buffer.c
index 7e836d5..040fb7a 100644
--- a/swfdec/swfdec_buffer.c
+++ b/swfdec/swfdec_buffer.c
@@ -61,8 +61,8 @@
/**
* SwfdecBufferFreeFunc:
- * @data: The data to free
* @priv: The private data registered for passing to this function
+ * @data: The data to free
*
* This is the function prototype for the function that is called for freeing
* the memory pointed to by a buffer. See swfdec_buffer_new() for an example.
@@ -84,28 +84,6 @@ swfdec_buffer_get_type (void)
/**
* swfdec_buffer_new:
- *
- * Creates a new #SwfdecBuffer to be filled by the user. Use like this:
- * <informalexample><programlisting>SwfdecBuffer *buffer = swfdec_buffer_new ();
- * buffer->data = mydata;
- * buffer->length = mydata_length;
- * buffer->free = mydata_freefunc;
- * buffer->priv = mydata_private;</programlisting></informalexample>
- *
- * Returns: a new #SwfdecBuffer referencing nothing.
- **/
-SwfdecBuffer *
-swfdec_buffer_new (void)
-{
- SwfdecBuffer *buffer;
-
- buffer = g_new0 (SwfdecBuffer, 1);
- buffer->ref_count = 1;
- return buffer;
-}
-
-/**
- * swfdec_buffer_new_and_alloc:
* @size: amount of bytes to allocate
*
* Creates a new buffer and allocates new memory of @size bytes to be used with
@@ -114,36 +92,26 @@ swfdec_buffer_new (void)
* Returns: a new #SwfdecBuffer with buffer->data pointing to new data
**/
SwfdecBuffer *
-swfdec_buffer_new_and_alloc (gsize size)
+swfdec_buffer_new (gsize size)
{
- SwfdecBuffer *buffer = swfdec_buffer_new ();
-
- buffer->data = g_malloc (size);
- buffer->length = size;
- buffer->free = (SwfdecBufferFreeFunc) g_free;
-
- return buffer;
+ unsigned char *data = g_malloc (size);
+ return swfdec_buffer_new_full (data, size, (SwfdecBufferFreeFunc) g_free, data);
}
/**
- * swfdec_buffer_new_and_alloc0:
+ * swfdec_buffer_new0:
* @size: amount of bytes to allocate
*
- * Createsa new buffer just like swfdec_buffer_new_and_alloc(), but ensures
+ * Createsa new buffer just like swfdec_buffer_new(), but ensures
* that the returned data gets initialized to be 0.
*
* Returns: a new #SwfdecBuffer with buffer->data pointing to new data
**/
SwfdecBuffer *
-swfdec_buffer_new_and_alloc0 (gsize size)
+swfdec_buffer_new0 (gsize size)
{
- SwfdecBuffer *buffer = swfdec_buffer_new ();
-
- buffer->data = g_malloc0 (size);
- buffer->length = size;
- buffer->free = (SwfdecBufferFreeFunc) g_free;
-
- return buffer;
+ unsigned char *data = g_malloc0 (size);
+ return swfdec_buffer_new_full (data, size, (SwfdecBufferFreeFunc) g_free, data);
}
/**
@@ -155,6 +123,14 @@ swfdec_buffer_new_and_alloc0 (gsize size)
*
* Returns: a new #SwfdecBuffer pointing to @data
**/
+SwfdecBuffer *
+swfdec_buffer_new_for_data (guchar *data, gsize size)
+{
+ /* This is not a macro because a macro would evaluate the data pointer twice
+ * and people like doing swfdec_buffer_new_for_data (g_malloc (10), 10);
+ */
+ return swfdec_buffer_new_full (data, size, (SwfdecBufferFreeFunc) g_free, data);
+}
/**
* swfdec_buffer_new_static:
* @data: static data
@@ -186,7 +162,8 @@ swfdec_buffer_new_full (unsigned char *data, gsize size,
g_return_val_if_fail (data != NULL, NULL);
g_return_val_if_fail (size > 0, NULL);
- buffer = swfdec_buffer_new ();
+ buffer = g_new0 (SwfdecBuffer, 1);
+ buffer->ref_count = 1;
buffer->data = data;
buffer->length = size;
buffer->free = free_func;
@@ -195,12 +172,6 @@ swfdec_buffer_new_full (unsigned char *data, gsize size,
return buffer;
}
-static void
-swfdec_buffer_free_subbuffer (unsigned char *data, gpointer priv)
-{
- swfdec_buffer_unref (priv);
-}
-
/**
* swfdec_buffer_new_subbuffer:
* @buffer: #SwfdecBuffer managing the region of memory
@@ -223,11 +194,9 @@ swfdec_buffer_new_subbuffer (SwfdecBuffer *buffer, gsize offset, gsize length)
if (offset == 0 && length == buffer->length)
return swfdec_buffer_ref (buffer);
- subbuffer = swfdec_buffer_new ();
- subbuffer->priv = swfdec_buffer_ref (swfdec_buffer_get_super (buffer));
- subbuffer->data = buffer->data + offset;
- subbuffer->length = length;
- subbuffer->free = swfdec_buffer_free_subbuffer;
+ subbuffer = swfdec_buffer_new_full (buffer->data + offset, length,
+ (SwfdecBufferFreeFunc) swfdec_buffer_unref,
+ swfdec_buffer_ref (swfdec_buffer_get_super (buffer)));
return subbuffer;
}
@@ -248,19 +217,12 @@ swfdec_buffer_get_super (SwfdecBuffer *buffer)
{
g_return_val_if_fail (buffer != NULL, NULL);
- if (buffer->free == swfdec_buffer_free_subbuffer)
+ if (buffer->free == (SwfdecBufferFreeFunc) swfdec_buffer_unref)
buffer = buffer->priv;
- g_assert (buffer->free != swfdec_buffer_free_subbuffer);
return buffer;
}
-static void
-swfdec_buffer_free_mapped (unsigned char *data, gpointer priv)
-{
- g_mapped_file_free (priv);
-}
-
/**
* swfdec_buffer_new_from_file:
* @filename: file to read
@@ -283,12 +245,9 @@ swfdec_buffer_new_from_file (const char *filename, GError **error)
file = g_mapped_file_new (filename, FALSE, NULL);
if (file != NULL) {
- SwfdecBuffer *buffer = swfdec_buffer_new ();
- buffer->data = (unsigned char *) g_mapped_file_get_contents (file),
- buffer->length = g_mapped_file_get_length (file);
- buffer->free = swfdec_buffer_free_mapped;
- buffer->priv = file;
- return buffer;
+ return swfdec_buffer_new_full ((guchar *) g_mapped_file_get_contents (file),
+ g_mapped_file_get_length (file),
+ (SwfdecBufferFreeFunc) g_mapped_file_free, file);
}
if (!g_file_get_contents (filename, &data, &length, error))
@@ -331,7 +290,7 @@ swfdec_buffer_unref (SwfdecBuffer * buffer)
buffer->ref_count--;
if (buffer->ref_count == 0) {
if (buffer->free)
- buffer->free (buffer->data, buffer->priv);
+ buffer->free (buffer->priv, buffer->data);
g_free (buffer);
}
}
@@ -521,7 +480,7 @@ swfdec_buffer_queue_peek (SwfdecBufferQueue * queue, gsize length)
/* need to special case here, because the queue may be empty */
if (length == 0)
- return swfdec_buffer_new ();
+ return swfdec_buffer_new (0);
g = queue->first_buffer;
buffer = g->data;
@@ -529,7 +488,7 @@ swfdec_buffer_queue_peek (SwfdecBufferQueue * queue, gsize length)
newbuffer = swfdec_buffer_new_subbuffer (buffer, 0, length);
} else {
gsize amount, offset;
- newbuffer = swfdec_buffer_new_and_alloc (length);
+ newbuffer = swfdec_buffer_new (length);
offset = 0;
while (offset < length) {
buffer = g->data;
diff --git a/swfdec/swfdec_buffer.h b/swfdec/swfdec_buffer.h
index 57cff63..2f66747 100644
--- a/swfdec/swfdec_buffer.h
+++ b/swfdec/swfdec_buffer.h
@@ -28,7 +28,7 @@
typedef struct _SwfdecBuffer SwfdecBuffer;
typedef struct _SwfdecBufferQueue SwfdecBufferQueue;
-typedef void (* SwfdecBufferFreeFunc) (unsigned char *data, gpointer priv);
+typedef void (* SwfdecBufferFreeFunc) (gpointer *priv, unsigned char *data);
struct _SwfdecBuffer
{
@@ -59,15 +59,13 @@ struct _SwfdecBufferQueue
#define SWFDEC_TYPE_BUFFER_QUEUE swfdec_buffer_queue_get_type()
GType swfdec_buffer_queue_get_type (void);
-SwfdecBuffer *swfdec_buffer_new (void);
-SwfdecBuffer *swfdec_buffer_new_and_alloc (gsize size);
-SwfdecBuffer *swfdec_buffer_new_and_alloc0 (gsize size);
+SwfdecBuffer *swfdec_buffer_new (gsize size);
+SwfdecBuffer *swfdec_buffer_new0 (gsize size);
+SwfdecBuffer *swfdec_buffer_new_full (unsigned char *data, gsize size, SwfdecBufferFreeFunc free_func, gpointer priv);
SwfdecBuffer *swfdec_buffer_new_subbuffer (SwfdecBuffer * buffer, gsize offset,
gsize length);
SwfdecBuffer *swfdec_buffer_new_from_file (const char *filename, GError **error);
-SwfdecBuffer *swfdec_buffer_new_full (unsigned char *data, gsize size, SwfdecBufferFreeFunc free_func, gpointer priv);
-#define swfdec_buffer_new_for_data(data, size) \
- swfdec_buffer_new_full (data, size, (SwfdecBufferFreeFunc) g_free, NULL)
+SwfdecBuffer *swfdec_buffer_new_for_data (unsigned char *data, gsize size);
#define swfdec_buffer_new_static(data, size) \
swfdec_buffer_new_full (data, size, NULL, NULL)
SwfdecBuffer *swfdec_buffer_ref (SwfdecBuffer * buffer);
diff --git a/swfdec/swfdec_codec_adpcm.c b/swfdec/swfdec_codec_adpcm.c
index 0aa39ab..600e313 100644
--- a/swfdec/swfdec_codec_adpcm.c
+++ b/swfdec/swfdec_codec_adpcm.c
@@ -78,7 +78,7 @@ swfdec_audio_decoder_adpcm_decode_chunk (SwfdecBits *bits, guint n_bits, guint c
}
len = swfdec_bits_left (bits) / channels / n_bits;
len = MIN (len, 4095);
- ret = swfdec_buffer_new_and_alloc ((len + 1) * sizeof (gint16) * channels);
+ ret = swfdec_buffer_new ((len + 1) * sizeof (gint16) * channels);
out = (gint16 *) (void *) ret->data;
/* output initial value */
SWFDEC_LOG ("decoding %u samples", len + 1);
diff --git a/swfdec/swfdec_codec_audio.c b/swfdec/swfdec_codec_audio.c
index 34edbe9..2d121af 100644
--- a/swfdec/swfdec_codec_audio.c
+++ b/swfdec/swfdec_codec_audio.c
@@ -44,7 +44,7 @@ swfdec_audio_decoder_uncompressed_decode_8bit (SwfdecAudioDecoder *decoder,
if (buffer == NULL)
return;
- ret = swfdec_buffer_new_and_alloc (buffer->length * 2);
+ ret = swfdec_buffer_new (buffer->length * 2);
out = (gint16 *) (void *) ret->data;
in = buffer->data;
for (i = 0; i < buffer->length; i++) {
diff --git a/swfdec/swfdec_codec_ffmpeg.c b/swfdec/swfdec_codec_ffmpeg.c
index 9e159d3..fef007b 100644
--- a/swfdec/swfdec_codec_ffmpeg.c
+++ b/swfdec/swfdec_codec_ffmpeg.c
@@ -77,7 +77,7 @@ swfdec_codec_ffmpeg_convert (AVCodecContext *ctx, SwfdecBuffer *buffer)
/* do the common case fast */
if (ctx->channels == 2 && ctx->sample_rate == 44100) {
- ret = swfdec_buffer_new_and_alloc (buffer->length);
+ ret = swfdec_buffer_new (buffer->length);
memcpy (ret->data, buffer->data, buffer->length);
return ret;
}
@@ -98,7 +98,7 @@ swfdec_codec_ffmpeg_convert (AVCodecContext *ctx, SwfdecBuffer *buffer)
}
if (ctx->channels == 1)
rate *= 2;
- ret = swfdec_buffer_new_and_alloc (buffer->length * rate);
+ ret = swfdec_buffer_new (buffer->length * rate);
out = (gint16 *) ret->data;
in = (gint16 *) buffer->data;
count = buffer->length / 2;
@@ -123,7 +123,7 @@ swfdec_audio_decoder_ffmpeg_push (SwfdecAudioDecoder *dec, SwfdecBuffer *buffer)
if (buffer == NULL)
return;
- outbuf = swfdec_buffer_new_and_alloc (AVCODEC_MAX_AUDIO_FRAME_SIZE);
+ outbuf = swfdec_buffer_new (AVCODEC_MAX_AUDIO_FRAME_SIZE);
for (amount = 0; amount < buffer->length; amount += len) {
out_size = AVCODEC_MAX_AUDIO_FRAME_SIZE;
diff --git a/swfdec/swfdec_codec_gst.c b/swfdec/swfdec_codec_gst.c
index 4b6f209..ebcd75f 100644
--- a/swfdec/swfdec_codec_gst.c
+++ b/swfdec/swfdec_codec_gst.c
@@ -30,15 +30,10 @@
/*** BUFFER ***/
-static void
-swfdec_gst_buffer_free (unsigned char *data, gpointer priv)
-{
- gst_buffer_unref (priv);
-}
-
+/* NB: references argument more than once */
#define swfdec_buffer_new_from_gst(buffer) \
swfdec_buffer_new_full (GST_BUFFER_DATA (buffer), GST_BUFFER_SIZE (buffer), \
- swfdec_gst_buffer_free, (buffer))
+ (SwfdecBufferFreeFunc) gst_mini_object_unref, (buffer))
static GstBuffer *
swfdec_gst_buffer_new (SwfdecBuffer *buffer)
diff --git a/swfdec/swfdec_codec_mad.c b/swfdec/swfdec_codec_mad.c
index ec15231..03241d5 100644
--- a/swfdec/swfdec_codec_mad.c
+++ b/swfdec/swfdec_codec_mad.c
@@ -70,7 +70,7 @@ convert_synth_to_buffer (MadData *mdata)
return NULL;
}
- buffer = swfdec_buffer_new_and_alloc (n_samples * 2 * 2);
+ buffer = swfdec_buffer_new (n_samples * 2 * 2);
data = (gint16 *) buffer->data;
if (mdata->synth.pcm.samplerate == 11025) {
@@ -148,11 +148,8 @@ swfdec_audio_decoder_mad_push (SwfdecAudioDecoder *dec, SwfdecBuffer *buffer)
SwfdecBuffer *out, *empty = NULL;
guint amount = 0, size;
- if (buffer == NULL) {
- buffer = empty = swfdec_buffer_new ();
- empty->data = g_malloc0 (MAD_BUFFER_GUARD * 3);
- empty->length = MAD_BUFFER_GUARD * 3;
- }
+ if (buffer == NULL)
+ buffer = empty = swfdec_buffer_new0 (MAD_BUFFER_GUARD * 3);
//write (1, buffer->data, buffer->length);
//g_print ("buffer %p gave us %u bytes\n", buffer, buffer->length);
diff --git a/swfdec/swfdec_script.c b/swfdec/swfdec_script.c
index ec73386..852b799 100644
--- a/swfdec/swfdec_script.c
+++ b/swfdec/swfdec_script.c
@@ -243,7 +243,7 @@ swfdec_script_new_from_bits (SwfdecBits *bits, const char *name, guint version)
}
len -= swfdec_bits_left (bits) / 8;
if (len == 0) {
- buffer = swfdec_buffer_new ();
+ buffer = swfdec_buffer_new (0);
} else {
buffer = swfdec_bits_get_buffer (&org, len);
}
diff --git a/swfdec/swfdec_swf_decoder.c b/swfdec/swfdec_swf_decoder.c
index 5f3b2e0..733faa7 100644
--- a/swfdec/swfdec_swf_decoder.c
+++ b/swfdec/swfdec_swf_decoder.c
@@ -95,7 +95,7 @@ swfdec_buffer_merge (const SwfdecBuffer *front, const SwfdecBuffer *end)
g_return_val_if_fail (front != NULL, NULL);
g_return_val_if_fail (end != NULL, NULL);
- new = swfdec_buffer_new_and_alloc (front->length + end->length);
+ new = swfdec_buffer_new (front->length + end->length);
if (front->length)
memcpy (new->data, front->data, front->length);
if (end->length)
commit 8238a63d16dfef63834dab10a5ef7dd130a2d5cd
Author: Benjamin Otte <otte at gnome.org>
Date: Tue Feb 5 12:47:09 2008 +0100
add swfdec_buffer_new_full() and use it instead of modifying buffer members directly
diff --git a/swfdec-gtk/swfdec_gtk_loader.c b/swfdec-gtk/swfdec_gtk_loader.c
index 42bbb76..8545625 100644
--- a/swfdec-gtk/swfdec_gtk_loader.c
+++ b/swfdec-gtk/swfdec_gtk_loader.c
@@ -101,11 +101,8 @@ swfdec_gtk_loader_push (SoupMessage *msg, SoupBuffer *chunk, gpointer loader)
chunk = soup_buffer_copy (chunk);
swfdec_gtk_loader_ensure_open (gtk);
- buffer = swfdec_buffer_new ();
- buffer->data = (unsigned char *) chunk->data;
- buffer->length = chunk->length;
- buffer->priv = chunk;
- buffer->free = swfdec_gtk_loader_free_soup_buffer;
+ buffer = swfdec_buffer_new_full ((unsigned char *) chunk->data, chunk->length,
+ swfdec_gtk_loader_free_soup_buffer, chunk);
swfdec_stream_push (loader, buffer);
}
diff --git a/swfdec/swfdec_buffer.c b/swfdec/swfdec_buffer.c
index 75a66c8..7e836d5 100644
--- a/swfdec/swfdec_buffer.c
+++ b/swfdec/swfdec_buffer.c
@@ -155,8 +155,31 @@ swfdec_buffer_new_and_alloc0 (gsize size)
*
* Returns: a new #SwfdecBuffer pointing to @data
**/
+/**
+ * swfdec_buffer_new_static:
+ * @data: static data
+ * @size: size of @data in bytes
+ *
+ * Creates a buffer for static data.
+ *
+ * Returns: a new #SwfdecBuffer pointing to @data
+ **/
+/**
+ * swfdec_buffer_new_full:
+ * @data: memory region to reference
+ * @size: size of the provided memory region
+ * @free_func: function to call for freeing the @data
+ * @priv: private data to bass to @free_func
+ *
+ * Creates a new #SwfdecBuffer for managing @data. The provided @free_func
+ * will be called when the returned buffer is not referenced anymore, the
+ * provided data needs to stay valid until that point.
+ *
+ * Returns: a new #SwfdecBuffer pointing to @data
+ **/
SwfdecBuffer *
-swfdec_buffer_new_for_data (unsigned char *data, gsize size)
+swfdec_buffer_new_full (unsigned char *data, gsize size,
+ SwfdecBufferFreeFunc free_func, gpointer priv)
{
SwfdecBuffer *buffer;
@@ -166,7 +189,8 @@ swfdec_buffer_new_for_data (unsigned char *data, gsize size)
buffer = swfdec_buffer_new ();
buffer->data = data;
buffer->length = size;
- buffer->free = (SwfdecBufferFreeFunc) g_free;
+ buffer->free = free_func;
+ buffer->priv = priv;
return buffer;
}
diff --git a/swfdec/swfdec_buffer.h b/swfdec/swfdec_buffer.h
index 1b851b6..57cff63 100644
--- a/swfdec/swfdec_buffer.h
+++ b/swfdec/swfdec_buffer.h
@@ -62,10 +62,14 @@ GType swfdec_buffer_queue_get_type (void);
SwfdecBuffer *swfdec_buffer_new (void);
SwfdecBuffer *swfdec_buffer_new_and_alloc (gsize size);
SwfdecBuffer *swfdec_buffer_new_and_alloc0 (gsize size);
-SwfdecBuffer *swfdec_buffer_new_for_data (unsigned char *data, gsize size);
SwfdecBuffer *swfdec_buffer_new_subbuffer (SwfdecBuffer * buffer, gsize offset,
gsize length);
SwfdecBuffer *swfdec_buffer_new_from_file (const char *filename, GError **error);
+SwfdecBuffer *swfdec_buffer_new_full (unsigned char *data, gsize size, SwfdecBufferFreeFunc free_func, gpointer priv);
+#define swfdec_buffer_new_for_data(data, size) \
+ swfdec_buffer_new_full (data, size, (SwfdecBufferFreeFunc) g_free, NULL)
+#define swfdec_buffer_new_static(data, size) \
+ swfdec_buffer_new_full (data, size, NULL, NULL)
SwfdecBuffer *swfdec_buffer_ref (SwfdecBuffer * buffer);
SwfdecBuffer *swfdec_buffer_get_super (SwfdecBuffer *buffer);
void swfdec_buffer_unref (SwfdecBuffer * buffer);
diff --git a/swfdec/swfdec_codec_gst.c b/swfdec/swfdec_codec_gst.c
index 2167050..4b6f209 100644
--- a/swfdec/swfdec_codec_gst.c
+++ b/swfdec/swfdec_codec_gst.c
@@ -36,21 +36,9 @@ swfdec_gst_buffer_free (unsigned char *data, gpointer priv)
gst_buffer_unref (priv);
}
-static SwfdecBuffer *
-swfdec_buffer_new_from_gst (GstBuffer *buffer)
-{
- SwfdecBuffer *ret;
-
- g_return_val_if_fail (GST_IS_BUFFER (buffer), NULL);
-
- ret = swfdec_buffer_new ();
- ret->data = GST_BUFFER_DATA (buffer);
- ret->length = GST_BUFFER_SIZE (buffer);
- ret->free = swfdec_gst_buffer_free;
- ret->priv = buffer;
-
- return ret;
-}
+#define swfdec_buffer_new_from_gst(buffer) \
+ swfdec_buffer_new_full (GST_BUFFER_DATA (buffer), GST_BUFFER_SIZE (buffer), \
+ swfdec_gst_buffer_free, (buffer))
static GstBuffer *
swfdec_gst_buffer_new (SwfdecBuffer *buffer)
commit df98d771e244aa439f9a411d05f9a092647c0918
Author: Benjamin Otte <otte at gnome.org>
Date: Tue Feb 5 12:46:34 2008 +0100
implement System.security.loadPolicyFile (untested)
diff --git a/swfdec/swfdec_system_security.c b/swfdec/swfdec_system_security.c
index 284eea1..404f689 100644
--- a/swfdec/swfdec_system_security.c
+++ b/swfdec/swfdec_system_security.c
@@ -26,6 +26,7 @@
#include "swfdec_as_strings.h"
#include "swfdec_resource.h"
#include "swfdec_player_internal.h"
+#include "swfdec_policy_file.h"
// properties
SWFDEC_AS_NATIVE (12, 0, swfdec_system_security_allowDomain)
@@ -46,13 +47,28 @@ swfdec_system_security_allowInsecureDomain (SwfdecAsContext *cx,
SWFDEC_STUB ("System.security.allowInsecureDomain (static)");
}
+static void
+swfdec_system_security_do_loadPolicyFile (gpointer url, gpointer player)
+{
+ swfdec_policy_file_new (player, url);
+}
+
SWFDEC_AS_NATIVE (12, 2, swfdec_system_security_loadPolicyFile)
void
swfdec_system_security_loadPolicyFile (SwfdecAsContext *cx,
SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
SwfdecAsValue *ret)
{
- SWFDEC_STUB ("System.security.loadPolicyFile (static)");
+ SwfdecPlayer *player;
+ const char *url_string;
+ SwfdecURL *url;
+
+ SWFDEC_AS_CHECK (0, NULL, "s", &url_string);
+
+ player = SWFDEC_PLAYER (cx);
+ url = swfdec_player_create_url (player, url_string);
+ swfdec_player_request_resource (player, swfdec_system_security_do_loadPolicyFile,
+ url, (GDestroyNotify) swfdec_url_free);
}
SWFDEC_AS_NATIVE (12, 3, swfdec_system_security_chooseLocalSwfPath)
commit dac4f609cf10a2283dc638ae324a60286e0b9f6f
Author: Benjamin Otte <otte at gnome.org>
Date: Tue Feb 5 12:45:45 2008 +0100
don't try getting a parent path when path is NULL
diff --git a/swfdec/swfdec_url.c b/swfdec/swfdec_url.c
index 2d0f29d..5e86632 100644
--- a/swfdec/swfdec_url.c
+++ b/swfdec/swfdec_url.c
@@ -223,7 +223,8 @@ swfdec_url_new_parent (const SwfdecURL *url)
SwfdecURL *ret;
path = g_strdup (url->path);
- swfdec_url_path_to_parent_path (path);
+ if (path)
+ swfdec_url_path_to_parent_path (path);
ret = swfdec_url_new_components (url->protocol, url->host, url->port,
path, NULL);
g_free (path);
commit 04a1b286948f8035d635f29ff95b16c64ba9fc87
Author: Benjamin Otte <otte at gnome.org>
Date: Tue Feb 5 12:45:20 2008 +0100
add a describe vfunc so we don't crash
diff --git a/swfdec/swfdec_socket.c b/swfdec/swfdec_socket.c
index d3ebe9e..821e214 100644
--- a/swfdec/swfdec_socket.c
+++ b/swfdec/swfdec_socket.c
@@ -80,9 +80,20 @@ swfdec_socket_do_send (SwfdecSocket *socket, SwfdecBuffer *buffer)
swfdec_buffer_unref (buffer);
}
+static const char *
+swfdec_socket_describe (SwfdecStream *stream)
+{
+ /* FIXME: add host/port */
+ return G_OBJECT_TYPE_NAME (stream);
+}
+
static void
swfdec_socket_class_init (SwfdecSocketClass *klass)
{
+ SwfdecStreamClass *stream_class = SWFDEC_STREAM_CLASS (klass);
+
+ stream_class->describe = swfdec_socket_describe;
+
klass->connect = swfdec_socket_do_connect;
klass->send = swfdec_socket_do_send;
}
commit 560cbf0e36a465145983a31ea6631ffbe8d07985
Author: Benjamin Otte <otte at gnome.org>
Date: Mon Feb 4 12:35:20 2008 +0100
alignment
diff --git a/test/swfdec_test_plugin.h b/test/swfdec_test_plugin.h
index e7a68e9..0866453 100644
--- a/test/swfdec_test_plugin.h
+++ b/test/swfdec_test_plugin.h
@@ -43,37 +43,37 @@ typedef struct _SwfdecTestPlugin SwfdecTestPlugin;
struct _SwfdecTestPlugin {
/* initialized by the player before calling swfdec_test_plugin_new() */
char * filename;
- void (* trace) (SwfdecTestPlugin * plugin,
- const char * string);
- void (* quit) (SwfdecTestPlugin * plugin);
- void (* error) (SwfdecTestPlugin * plugin,
- const char * description);
+ void (* trace) (SwfdecTestPlugin * plugin,
+ const char * string);
+ void (* quit) (SwfdecTestPlugin * plugin);
+ void (* error) (SwfdecTestPlugin * plugin,
+ const char * description);
/* initialized by the plugin during swfdec_test_plugin_new() */
unsigned int width;
unsigned int height;
unsigned int rate; /* in 256th of a second */
- void (* advance) (SwfdecTestPlugin * plugin,
- unsigned int msecs);
+ void (* advance) (SwfdecTestPlugin * plugin,
+ unsigned int msecs);
/* data nulled is ARGB for (provided) width * height with rowstride = width * 4 */
/* size is guaranteed to fit into 0,0 x width,height */
- void (* screenshot) (SwfdecTestPlugin * plugin,
- unsigned char * data,
- unsigned int x,
- unsigned int y,
- unsigned int width,
- unsigned int height);
- void (* mouse_move) (SwfdecTestPlugin * plugin,
- double x,
- double y);
- void (* mouse_press) (SwfdecTestPlugin * plugin,
- double x,
- double y,
- unsigned int button); /* 1 - 32 */
- void (* mouse_release) (SwfdecTestPlugin * plugin,
- double x,
- double y,
- unsigned int button); /* 1 - 32 */
- void (* finish) (SwfdecTestPlugin * plugin);
+ void (* screenshot) (SwfdecTestPlugin * plugin,
+ unsigned char * data,
+ unsigned int x,
+ unsigned int y,
+ unsigned int width,
+ unsigned int height);
+ void (* mouse_move) (SwfdecTestPlugin * plugin,
+ double x,
+ double y);
+ void (* mouse_press) (SwfdecTestPlugin * plugin,
+ double x,
+ double y,
+ unsigned int button); /* 1 - 32 */
+ void (* mouse_release) (SwfdecTestPlugin * plugin,
+ double x,
+ double y,
+ unsigned int button); /* 1 - 32 */
+ void (* finish) (SwfdecTestPlugin * plugin);
void * data;
};
@@ -87,6 +87,6 @@ struct _SwfdecTestPlugin {
*
* Returns: a new SwfdecTestPlugin instance
**/
-void swfdec_test_plugin_init (SwfdecTestPlugin *plugin);
+void swfdec_test_plugin_init (SwfdecTestPlugin * plugin);
#endif
commit 14dfe6f0915cbef5857f02abbe3b9eb06af33aeb
Author: Benjamin Otte <otte at gnome.org>
Date: Sun Feb 3 23:44:13 2008 +0100
implement xmlsocket:// policy file loading
diff --git a/swfdec/swfdec_policy_file.c b/swfdec/swfdec_policy_file.c
index 2070f67..a7069ae 100644
--- a/swfdec/swfdec_policy_file.c
+++ b/swfdec/swfdec_policy_file.c
@@ -158,6 +158,17 @@ swfdec_policy_file_finished_loading (SwfdecPolicyFile *file, const char *text)
}
static void
+swfdec_policy_file_target_open (SwfdecStreamTarget *target,
+ SwfdecStream *stream)
+{
+ if (SWFDEC_IS_SOCKET (stream)) {
+ SwfdecBuffer *buffer = swfdec_buffer_new_for_data (
+ (guchar *) g_strdup ("<policy-file-request/>"), 23);
+ swfdec_socket_send (SWFDEC_SOCKET (stream), buffer);
+ }
+}
+
+static void
swfdec_policy_file_target_error (SwfdecStreamTarget *target,
SwfdecStream *stream)
{
@@ -187,6 +198,7 @@ static void
swfdec_policy_file_stream_target_init (SwfdecStreamTargetInterface *iface)
{
iface->get_player = swfdec_policy_file_target_get_player;
+ iface->open = swfdec_policy_file_target_open;
iface->close = swfdec_policy_file_target_close;
iface->error = swfdec_policy_file_target_error;
}
@@ -243,12 +255,13 @@ swfdec_policy_file_new (SwfdecPlayer *player, const SwfdecURL *url)
file->load_url = swfdec_url_copy (url);
file->url = swfdec_url_new_parent (url);
if (swfdec_url_has_protocol (url, "xmlsocket")) {
- SWFDEC_FIXME ("implement xmlsocket: protocol");
+ file->stream = SWFDEC_STREAM (swfdec_player_create_socket (player,
+ swfdec_url_get_host (url), swfdec_url_get_port (url)));
} else {
file->stream = SWFDEC_STREAM (swfdec_player_load (player,
swfdec_url_get_url (url), SWFDEC_LOADER_REQUEST_DEFAULT, NULL));
- swfdec_stream_set_target (file->stream, SWFDEC_STREAM_TARGET (file));
}
+ swfdec_stream_set_target (file->stream, SWFDEC_STREAM_TARGET (file));
player->priv->loading_policy_files =
g_list_prepend (player->priv->loading_policy_files, file);
commit 11be954666bbc563f1630ec5da53f3ecac8eb7c1
Author: Benjamin Otte <otte at gnome.org>
Date: Sun Feb 3 23:27:10 2008 +0100
as a SwfdecSocket is now a valid socket, we can use it and not return NULL
diff --git a/swfdec/swfdec_player.c b/swfdec/swfdec_player.c
index 33a4ea8..e0c59ac 100644
--- a/swfdec/swfdec_player.c
+++ b/swfdec/swfdec_player.c
@@ -2157,9 +2157,8 @@ swfdec_player_set_export_class (SwfdecPlayer *player, const char *name, SwfdecAs
*
* Creates a new socket connecting to the given hostname and port.
*
- * Returns: a new socket or %NULL if no socket implementation exists
+ * Returns: a new socket
**/
-/* FIXME: always return a socket? */
SwfdecSocket *
swfdec_player_create_socket (SwfdecPlayer *player, const char *hostname, guint port)
{
@@ -2170,10 +2169,6 @@ swfdec_player_create_socket (SwfdecPlayer *player, const char *hostname, guint p
g_return_val_if_fail (hostname != NULL, NULL);
g_return_val_if_fail (port > 0, NULL);
- if (!G_TYPE_IS_INSTANTIATABLE (player->priv->socket_type)) {
- SWFDEC_INFO ("can't create socket, no socket type set.");
- return NULL;
- }
sock = g_object_new (player->priv->socket_type, NULL);
klass = SWFDEC_SOCKET_GET_CLASS (sock);
klass->connect (sock, player, hostname, port);
commit 225d3e1f1e505ebd676963cf8582925da2626ea3
Author: Benjamin Otte <otte at gnome.org>
Date: Sun Feb 3 23:26:50 2008 +0100
make a SwfdecSocket a valid socket type that does nothing
diff --git a/swfdec/swfdec_socket.c b/swfdec/swfdec_socket.c
index 19f47aa..d3ebe9e 100644
--- a/swfdec/swfdec_socket.c
+++ b/swfdec/swfdec_socket.c
@@ -65,11 +65,26 @@
/*** SWFDEC_SOCKET ***/
-G_DEFINE_ABSTRACT_TYPE (SwfdecSocket, swfdec_socket, SWFDEC_TYPE_STREAM)
+G_DEFINE_TYPE (SwfdecSocket, swfdec_socket, SWFDEC_TYPE_STREAM)
+
+static void
+swfdec_socket_do_connect (SwfdecSocket *socket, SwfdecPlayer *player,
+ const char *hostname, guint port)
+{
+ swfdec_stream_error (SWFDEC_STREAM (socket), "no socket implementation exists");
+}
+
+static void
+swfdec_socket_do_send (SwfdecSocket *socket, SwfdecBuffer *buffer)
+{
+ swfdec_buffer_unref (buffer);
+}
static void
swfdec_socket_class_init (SwfdecSocketClass *klass)
{
+ klass->connect = swfdec_socket_do_connect;
+ klass->send = swfdec_socket_do_send;
}
static void
commit f9d23bb1d543bbb5573785fa1e0239f0c62f68f8
Author: Benjamin Otte <otte at gnome.org>
Date: Sun Feb 3 22:36:19 2008 +0100
remove outdated warning
diff --git a/swfdec/swfdec_policy_file.c b/swfdec/swfdec_policy_file.c
index 842091a..2070f67 100644
--- a/swfdec/swfdec_policy_file.c
+++ b/swfdec/swfdec_policy_file.c
@@ -173,12 +173,7 @@ swfdec_policy_file_target_close (SwfdecStreamTarget *target,
SwfdecPolicyFile *file = SWFDEC_POLICY_FILE (target);
char *text;
- if (SWFDEC_IS_LOADER (stream)) {
- text = swfdec_buffer_queue_pull_text (swfdec_stream_get_queue (stream), 8);
- } else {
- SWFDEC_FIXME ("rewrite swfdec_loader_get_text() to swfdec_buffer_queue_get_text()");
- text = NULL;
- }
+ text = swfdec_buffer_queue_pull_text (swfdec_stream_get_queue (stream), 8);
if (text == NULL) {
SWFDEC_ERROR ("couldn't get text from crossdomain policy file %s",
More information about the Swfdec-commits
mailing list