Benjamin Otte
2007-Dec-13 10:09 UTC
[Swfdec] libswfdec-gtk/swfdec_gtk_player.c libswfdec/swfdec_as_date.c libswfdec/swfdec_audio.c libswfdec/swfdec_audio_event.c libswfdec/swfdec_button_movie.c libswfdec/swfdec_interval.c libswfdec/swfdec_key_as.c libswfdec/swfdec_mouse_as.c libswfdec/swfdec_movie.c libswfdec/swfdec_net_stream.c libswfdec/swfdec_player.c libswfdec/swfdec_player.h libswfdec/swfdec_player_internal.h libswfdec/swfdec_policy_loader.c libswfdec/swfdec_resource.c libswfdec/swfdec_resource_request.c libswfdec/swfdec_sound_object.c libswfdec/swfdec_sprite.c libswfdec/swfdec_sprite_movie_as.c libswfdec/swfdec_sprite_movie.c libswfdec/swfdec_stage_as.c libswfdec/swfdec_swf_decoder.c libswfdec/swfdec_system_as.c libswfdec/swfdec_system_security.c libswfdec/swfdec_video_movie_as.c libswfdec/swfdec_video_movie.c test/dump.c test/swfdec-extract.c
libswfdec-gtk/swfdec_gtk_player.c | 1 libswfdec/swfdec_as_date.c | 7 libswfdec/swfdec_audio.c | 10 libswfdec/swfdec_audio_event.c | 2 libswfdec/swfdec_button_movie.c | 2 libswfdec/swfdec_interval.c | 14 libswfdec/swfdec_key_as.c | 6 libswfdec/swfdec_mouse_as.c | 8 libswfdec/swfdec_movie.c | 34 - libswfdec/swfdec_net_stream.c | 2 libswfdec/swfdec_player.c | 777 +++++++++++++++++++----------------- libswfdec/swfdec_player.h | 25 + libswfdec/swfdec_player_internal.h | 24 - libswfdec/swfdec_policy_loader.c | 2 libswfdec/swfdec_resource.c | 8 libswfdec/swfdec_resource_request.c | 24 - libswfdec/swfdec_sound_object.c | 2 libswfdec/swfdec_sprite.c | 15 libswfdec/swfdec_sprite_movie.c | 4 libswfdec/swfdec_sprite_movie_as.c | 7 libswfdec/swfdec_stage_as.c | 19 libswfdec/swfdec_swf_decoder.c | 2 libswfdec/swfdec_system_as.c | 24 - libswfdec/swfdec_system_security.c | 2 libswfdec/swfdec_video_movie.c | 2 libswfdec/swfdec_video_movie_as.c | 2 test/dump.c | 6 test/swfdec-extract.c | 6 28 files changed, 568 insertions(+), 469 deletions(-) New commits: commit 9eb2e0de2296d01f79fa3ac25c536aeb404b7d1c Author: Benjamin Otte <otte at gnome.org> Date: Thu Dec 13 10:05:57 2007 +0100 export SwfdecPlayer structure This patch adds a SwfdecPlayerPrivate structure that contains all the player elements, as is usual in exported GObjects. Exporting SwfdecPlayer is necessary for creating subclasses in swfdec-gtk or (the new) swfdec-directfb, that can't depend on private headers. diff --git a/libswfdec-gtk/swfdec_gtk_player.c b/libswfdec-gtk/swfdec_gtk_player.c index 485f708..c494a71 100644 --- a/libswfdec-gtk/swfdec_gtk_player.c +++ b/libswfdec-gtk/swfdec_gtk_player.c @@ -21,7 +21,6 @@ #include "config.h" #endif -#include <libswfdec/swfdec_player_internal.h> #include "libswfdec-gtk/swfdec_gtk_loader.h" #include "libswfdec-gtk/swfdec_gtk_player.h" #include "libswfdec-gtk/swfdec_playback.h" diff --git a/libswfdec/swfdec_as_date.c b/libswfdec/swfdec_as_date.c index 148e61d..648b50f 100644 --- a/libswfdec/swfdec_as_date.c +++ b/libswfdec/swfdec_as_date.c @@ -1036,8 +1036,11 @@ swfdec_as_date_construct (SwfdecAsContext *cx, SwfdecAsObject *object, date = SWFDEC_AS_DATE (object); - date->utc_offset - SWFDEC_PLAYER (SWFDEC_AS_OBJECT (date)->context)->system->utc_offset; + /* FIXME: find a general solution here */ + if (SWFDEC_IS_PLAYER (SWFDEC_AS_OBJECT (date)->context)) { + date->utc_offset + SWFDEC_PLAYER (SWFDEC_AS_OBJECT (date)->context)->priv->system->utc_offset; + } // don't accept arguments when not constructing if (!cx->frame->construct) diff --git a/libswfdec/swfdec_audio.c b/libswfdec/swfdec_audio.c index f94ea53..e9a5e5f 100644 --- a/libswfdec/swfdec_audio.c +++ b/libswfdec/swfdec_audio.c @@ -92,6 +92,8 @@ swfdec_audio_init (SwfdecAudio *audio) void swfdec_audio_add (SwfdecAudio *audio, SwfdecPlayer *player) { + SwfdecPlayerPrivate *priv; + g_return_if_fail (SWFDEC_IS_AUDIO (audio)); g_return_if_fail (audio->player == NULL); if (player == NULL) @@ -100,7 +102,8 @@ swfdec_audio_add (SwfdecAudio *audio, SwfdecPlayer *player) g_object_ref (audio); audio->player = player; - player->audio = g_list_append (player->audio, audio); + priv = player->priv; + priv->audio = g_list_append (priv->audio, audio); SWFDEC_INFO ("adding %s %p", G_OBJECT_TYPE_NAME (audio), audio); } @@ -110,8 +113,9 @@ swfdec_audio_remove (SwfdecAudio *audio) g_return_if_fail (SWFDEC_IS_AUDIO (audio)); if (audio->player != NULL) { + SwfdecPlayerPrivate *priv = audio->player->priv; SWFDEC_INFO ("removing %s %p", G_OBJECT_TYPE_NAME (audio), audio); - audio->player->audio = g_list_remove (audio->player->audio, audio); + priv->audio = g_list_remove (priv->audio, audio); if (audio->added) { g_signal_emit_by_name (audio->player, "audio-removed", audio); audio->added = FALSE; @@ -197,7 +201,7 @@ swfdec_player_render_audio (SwfdecPlayer *player, gint16* dest, g_return_if_fail (n_samples > 0); SWFDEC_LOG ("rendering offset %u, samples %u", start_offset, n_samples); - for (walk = player->audio; walk; walk = walk->next) { + for (walk = player->priv->audio; walk; walk = walk->next) { audio = walk->data; swfdec_audio_render (audio, dest, start_offset, n_samples); } diff --git a/libswfdec/swfdec_audio_event.c b/libswfdec/swfdec_audio_event.c index 4f7ee5c..fc05dcd 100644 --- a/libswfdec/swfdec_audio_event.c +++ b/libswfdec/swfdec_audio_event.c @@ -271,7 +271,7 @@ swfdec_audio_event_get (SwfdecPlayer *player, SwfdecSound *sound) if (player == NULL) return NULL; - for (walk = player->audio; walk; walk = walk->next) { + for (walk = player->priv->audio; walk; walk = walk->next) { SwfdecAudio *audio = walk->data; if (!SWFDEC_IS_AUDIO_EVENT (audio)) continue; diff --git a/libswfdec/swfdec_button_movie.c b/libswfdec/swfdec_button_movie.c index 1c9e1e3..e7ccdba 100644 --- a/libswfdec/swfdec_button_movie.c +++ b/libswfdec/swfdec_button_movie.c @@ -208,7 +208,7 @@ swfdec_button_movie_mouse_release (SwfdecMovie *movie, guint button) if (button != 0) return; player = SWFDEC_PLAYER (SWFDEC_AS_OBJECT (movie)->context); - if (player->mouse_below == movie) { + if (player->priv->mouse_below == movie) { swfdec_button_movie_set_state (SWFDEC_BUTTON_MOVIE (movie), SWFDEC_BUTTON_OVER); SWFDEC_MOVIE_CLASS (swfdec_button_movie_parent_class)->mouse_release (movie, button); diff --git a/libswfdec/swfdec_interval.c b/libswfdec/swfdec_interval.c index 59f3ea7..1d98b2b 100644 --- a/libswfdec/swfdec_interval.c +++ b/libswfdec/swfdec_interval.c @@ -93,7 +93,7 @@ swfdec_interval_trigger (SwfdecTimeout *timeout) timeout->timestamp += SWFDEC_MSECS_TO_TICKS (interval->msecs); swfdec_player_add_timeout (SWFDEC_PLAYER (context), timeout); } else { - player->intervals = g_list_remove (player->intervals, interval); + player->priv->intervals = g_list_remove (player->priv->intervals, interval); interval->timeout.callback = NULL; } if (interval->fun_name) { @@ -122,19 +122,19 @@ swfdec_interval_new (SwfdecPlayer *player, guint msecs, gboolean repeat, interval = g_object_new (SWFDEC_TYPE_INTERVAL, NULL); swfdec_as_object_add (SWFDEC_AS_OBJECT (interval), context, size); - interval->id = ++player->interval_id; + interval->id = ++player->priv->interval_id; interval->msecs = msecs; interval->repeat = repeat; interval->object = object; interval->fun_name = fun_name; interval->n_args = n_args; interval->args = g_memdup (args, n_args * sizeof (SwfdecAsValue)); - interval->timeout.timestamp = player->time + SWFDEC_MSECS_TO_TICKS (interval->msecs); + interval->timeout.timestamp = player->priv->time + SWFDEC_MSECS_TO_TICKS (interval->msecs); interval->timeout.callback = swfdec_interval_trigger; swfdec_player_add_timeout (player, &interval->timeout); - player->intervals = - g_list_prepend (player->intervals, interval); + player->priv->intervals = + g_list_prepend (player->priv->intervals, interval); return interval->id; } @@ -172,12 +172,12 @@ swfdec_interval_remove (SwfdecPlayer *player, guint id) g_return_if_fail (SWFDEC_IS_PLAYER (player)); - for (walk = player->intervals; walk; walk = walk->next) { + for (walk = player->priv->intervals; walk; walk = walk->next) { SwfdecInterval *interval = walk->data; if (interval->id != id) continue; - player->intervals = g_list_delete_link (player->intervals, walk); + player->priv->intervals = g_list_delete_link (player->priv->intervals, walk); swfdec_player_remove_timeout (player, &interval->timeout); interval->timeout.callback = NULL; return; diff --git a/libswfdec/swfdec_key_as.c b/libswfdec/swfdec_key_as.c index 3303249..ca7a949 100644 --- a/libswfdec/swfdec_key_as.c +++ b/libswfdec/swfdec_key_as.c @@ -34,7 +34,7 @@ swfdec_key_getAscii (SwfdecAsContext *cx, SwfdecAsObject *object, { SwfdecPlayer *player = SWFDEC_PLAYER (cx); - SWFDEC_AS_VALUE_SET_INT (retval, player->last_character); + SWFDEC_AS_VALUE_SET_INT (retval, player->priv->last_character); } SWFDEC_AS_NATIVE (800, 1, swfdec_key_getCode) @@ -44,7 +44,7 @@ swfdec_key_getCode (SwfdecAsContext *cx, SwfdecAsObject *object, { SwfdecPlayer *player = SWFDEC_PLAYER (cx); - SWFDEC_AS_VALUE_SET_INT (retval, player->last_keycode); + SWFDEC_AS_VALUE_SET_INT (retval, player->priv->last_keycode); } SWFDEC_AS_NATIVE (800, 2, swfdec_key_isDown) @@ -63,7 +63,7 @@ swfdec_key_isDown (SwfdecAsContext *cx, SwfdecAsObject *object, SWFDEC_FIXME ("id %u too big for a keycode", id); id %= 256; } - SWFDEC_AS_VALUE_SET_BOOLEAN (retval, (player->key_pressed[id / 8] & (1 << (id % 8))) ? TRUE : FALSE); + SWFDEC_AS_VALUE_SET_BOOLEAN (retval, (player->priv->key_pressed[id / 8] & (1 << (id % 8))) ? TRUE : FALSE); } SWFDEC_AS_NATIVE (800, 3, swfdec_key_isToggled) diff --git a/libswfdec/swfdec_mouse_as.c b/libswfdec/swfdec_mouse_as.c index 914e009..88ee046 100644 --- a/libswfdec/swfdec_mouse_as.c +++ b/libswfdec/swfdec_mouse_as.c @@ -34,8 +34,8 @@ swfdec_mouse_show (SwfdecAsContext *cx, SwfdecAsObject *object, { SwfdecPlayer *player = SWFDEC_PLAYER (cx); - SWFDEC_AS_VALUE_SET_INT (retval, player->mouse_visible ? 1 : 0); - player->mouse_visible = TRUE; + SWFDEC_AS_VALUE_SET_INT (retval, player->priv->mouse_visible ? 1 : 0); + player->priv->mouse_visible = TRUE; } SWFDEC_AS_NATIVE (5, 1, swfdec_mouse_hide) @@ -45,7 +45,7 @@ swfdec_mouse_hide (SwfdecAsContext *cx, SwfdecAsObject *object, { SwfdecPlayer *player = SWFDEC_PLAYER (cx); - SWFDEC_AS_VALUE_SET_INT (retval, player->mouse_visible ? 1 : 0); - player->mouse_visible = FALSE; + SWFDEC_AS_VALUE_SET_INT (retval, player->priv->mouse_visible ? 1 : 0); + player->priv->mouse_visible = FALSE; } diff --git a/libswfdec/swfdec_movie.c b/libswfdec/swfdec_movie.c index 92a0edb..8cdfd80 100644 --- a/libswfdec/swfdec_movie.c +++ b/libswfdec/swfdec_movie.c @@ -305,6 +305,7 @@ swfdec_movie_find (SwfdecMovie *movie, int depth) static gboolean swfdec_movie_do_remove (SwfdecMovie *movie, gboolean destroy) { + SwfdecPlayerPrivate *priv; SwfdecPlayer *player; SWFDEC_LOG ("removing %s %s", G_OBJECT_TYPE_NAME (movie), movie->name); @@ -319,10 +320,11 @@ swfdec_movie_do_remove (SwfdecMovie *movie, gboolean destroy) destroy &= swfdec_movie_do_remove (walk->data, destroy); } /* FIXME: all of this here or in destroy callback? */ - if (player->mouse_grab == movie) - player->mouse_grab = NULL; - if (player->mouse_drag == movie) - player->mouse_drag = NULL; + priv = player->priv; + if (priv->mouse_grab == movie) + priv->mouse_grab = NULL; + if (priv->mouse_drag == movie) + priv->mouse_drag = NULL; swfdec_movie_invalidate_last (movie); movie->state = SWFDEC_MOVIE_STATE_REMOVED; @@ -380,7 +382,7 @@ swfdec_movie_destroy (SwfdecMovie *movie) if (movie->parent) { movie->parent->list = g_list_remove (movie->parent->list, movie); } else { - player->roots = g_list_remove (player->roots, movie); + player->priv->roots = g_list_remove (player->priv->roots, movie); } /* unset masks */ if (movie->masked_by) @@ -394,7 +396,7 @@ swfdec_movie_destroy (SwfdecMovie *movie) swfdec_player_remove_all_actions (player, movie); if (klass->finish_movie) klass->finish_movie (movie); - player->movies = g_list_remove (player->movies, movie); + player->priv->movies = g_list_remove (player->priv->movies, movie); movie->state = SWFDEC_MOVIE_STATE_DESTROYED; /* unset prototype here, so we don't work in AS anymore */ SWFDEC_AS_OBJECT (movie)->prototype = NULL; @@ -422,7 +424,7 @@ swfdec_movie_set_constructor (SwfdecSpriteMovie *movie) } } if (constructor == NULL) - constructor = SWFDEC_PLAYER (context)->MovieClip; + constructor = SWFDEC_PLAYER (context)->priv->MovieClip; swfdec_as_object_set_constructor (SWFDEC_AS_OBJECT (movie), constructor); } @@ -675,8 +677,8 @@ swfdec_movie_get_mouse (SwfdecMovie *movie, double *x, double *y) g_return_if_fail (y != NULL); player = SWFDEC_PLAYER (SWFDEC_AS_OBJECT (movie)->context); - *x = player->mouse_x; - *y = player->mouse_y; + *x = player->priv->mouse_x; + *y = player->priv->mouse_y; swfdec_player_stage_to_global (player, x, y); swfdec_movie_global_to_local (movie, x, y); } @@ -1076,7 +1078,7 @@ swfdec_movie_get_by_name (SwfdecMovie *movie, const char *name, gboolean unnamed if (errno != 0 || *end != 0 || l > G_MAXINT) return NULL; i = l - 16384; - for (walk = player->roots; walk; walk = walk->next) { + for (walk = player->priv->roots; walk; walk = walk->next) { SwfdecMovie *cur = walk->data; if (cur->depth < i) continue; @@ -1133,7 +1135,7 @@ swfdec_movie_get_variable (SwfdecAsObject *object, SwfdecAsObject *orig, } if (movie->parent == NULL && variable == SWFDEC_AS_STR__version) { SWFDEC_AS_VALUE_SET_STRING (val, swfdec_as_context_get_string (object->context, - SWFDEC_PLAYER (object->context)->system->version)); + SWFDEC_PLAYER (object->context)->priv->system->version)); *flags = 0; return TRUE; } @@ -1391,7 +1393,7 @@ swfdec_movie_mouse_release (SwfdecMovie *movie, guint button) return; player = SWFDEC_PLAYER (SWFDEC_AS_OBJECT (movie)->context); - if (player->mouse_below == movie) + if (player->priv->mouse_below == movie) swfdec_movie_queue_script (movie, SWFDEC_EVENT_RELEASE); else swfdec_movie_queue_script (movie, SWFDEC_EVENT_RELEASE_OUTSIDE); @@ -1481,7 +1483,7 @@ swfdec_movie_set_depth (SwfdecMovie *movie, int depth) if (movie->parent) { movie->parent->list = g_list_sort (movie->parent->list, swfdec_movie_compare_depths); } else { - SwfdecPlayer *player = SWFDEC_PLAYER (SWFDEC_AS_OBJECT (movie)->context); + SwfdecPlayerPrivate *player = SWFDEC_PLAYER (SWFDEC_AS_OBJECT (movie)->context)->priv; player->roots = g_list_sort (player->roots, swfdec_movie_compare_depths); } g_object_notify (G_OBJECT (movie), "depth"); @@ -1546,7 +1548,7 @@ swfdec_movie_new (SwfdecPlayer *player, int depth, SwfdecMovie *parent, SwfdecRe /* invalidate the parent, so it gets visible */ swfdec_movie_queue_update (parent, SWFDEC_MOVIE_INVALID_CHILDREN); } else { - player->roots = g_list_insert_sorted (player->roots, movie, swfdec_movie_compare_depths); + player->priv->roots = g_list_insert_sorted (player->priv->roots, movie, swfdec_movie_compare_depths); } /* set its name */ if (name) { @@ -1556,7 +1558,7 @@ swfdec_movie_new (SwfdecPlayer *player, int depth, SwfdecMovie *parent, SwfdecRe movie->original_name = SWFDEC_AS_STR_EMPTY; if (SWFDEC_IS_SPRITE_MOVIE (movie) || SWFDEC_IS_BUTTON_MOVIE (movie)) { movie->name = swfdec_as_context_give_string (SWFDEC_AS_CONTEXT (player), - g_strdup_printf ("instance%u", ++player->unnamed_count)); + g_strdup_printf ("instance%u", ++player->priv->unnamed_count)); } else { movie->name = SWFDEC_AS_STR_EMPTY; } @@ -1566,7 +1568,7 @@ swfdec_movie_new (SwfdecPlayer *player, int depth, SwfdecMovie *parent, SwfdecRe * Setting the parent does a gotoAndPlay(0) for Sprites which can cause * new movies to be created (and added to this list) */ - player->movies = g_list_prepend (player->movies, movie); + player->priv->movies = g_list_prepend (player->priv->movies, movie); /* only add the movie here, because it needs to be setup for the debugger */ swfdec_as_object_add (SWFDEC_AS_OBJECT (movie), SWFDEC_AS_CONTEXT (player), size); /* only setup here, the resource assumes it can access the player via the movie */ diff --git a/libswfdec/swfdec_net_stream.c b/libswfdec/swfdec_net_stream.c index 35c8c8e..cc821de 100644 --- a/libswfdec/swfdec_net_stream.c +++ b/libswfdec/swfdec_net_stream.c @@ -193,7 +193,7 @@ swfdec_net_stream_update_playing (SwfdecNetStream *stream) if (should_play && stream->timeout.callback == NULL) { SWFDEC_DEBUG ("starting playback"); stream->timeout.callback = swfdec_net_stream_timeout; - stream->timeout.timestamp = player->time + SWFDEC_MSECS_TO_TICKS (stream->next_time - stream->current_time); + stream->timeout.timestamp = player->priv->time + SWFDEC_MSECS_TO_TICKS (stream->next_time - stream->current_time); swfdec_player_add_timeout (player, &stream->timeout); if (stream->flvdecoder->audio) { g_assert (stream->audio == NULL); diff --git a/libswfdec/swfdec_player.c b/libswfdec/swfdec_player.c index 2c5f47c..efe2798 100644 --- a/libswfdec/swfdec_player.c +++ b/libswfdec/swfdec_player.c @@ -242,8 +242,10 @@ static SwfdecTick swfdec_player_get_next_event_time (SwfdecPlayer *player) { - if (player->timeouts) { - return ((SwfdecTimeout *) player->timeouts->data)->timestamp - player->time; + SwfdecPlayerPrivate *priv = player->priv; + + if (priv->timeouts) { + return ((SwfdecTimeout *) priv->timeouts->data)->timestamp - priv->time; } else { return G_MAXUINT64; } @@ -277,24 +279,26 @@ swfdec_player_get_next_event_time (SwfdecPlayer *player) void swfdec_player_add_timeout (SwfdecPlayer *player, SwfdecTimeout *timeout) { + SwfdecPlayerPrivate *priv; GList *walk; SwfdecTick next_tick; g_return_if_fail (SWFDEC_IS_PLAYER (player)); g_return_if_fail (timeout != NULL); - g_return_if_fail (timeout->timestamp >= player->time); + g_return_if_fail (timeout->timestamp >= player->priv->time); g_return_if_fail (timeout->callback != NULL); + priv = player->priv; SWFDEC_LOG ("adding timeout %p in %"G_GUINT64_FORMAT" msecs", timeout, - SWFDEC_TICKS_TO_MSECS (timeout->timestamp - player->time)); + SWFDEC_TICKS_TO_MSECS (timeout->timestamp - priv->time)); next_tick = swfdec_player_get_next_event_time (player); /* the order is important, on events with the same time, we make sure the new one is last */ - for (walk = player->timeouts; walk; walk = walk->next) { + for (walk = priv->timeouts; walk; walk = walk->next) { SwfdecTimeout *cur = walk->data; if (cur->timestamp > timeout->timestamp) break; } - player->timeouts = g_list_insert_before (player->timeouts, walk, timeout); + priv->timeouts = g_list_insert_before (priv->timeouts, walk, timeout); if (next_tick != swfdec_player_get_next_event_time (player)) g_object_notify (G_OBJECT (player), "next-event"); } @@ -310,16 +314,18 @@ swfdec_player_add_timeout (SwfdecPlayer *player, SwfdecTimeout *timeout) void swfdec_player_remove_timeout (SwfdecPlayer *player, SwfdecTimeout *timeout) { + SwfdecPlayerPrivate *priv; SwfdecTick next_tick; g_return_if_fail (SWFDEC_IS_PLAYER (player)); g_return_if_fail (timeout != NULL); - g_return_if_fail (timeout->timestamp >= player->time); + g_return_if_fail (timeout->timestamp >= player->priv->time); g_return_if_fail (timeout->callback != NULL); SWFDEC_LOG ("removing timeout %p", timeout); + priv = player->priv; next_tick = swfdec_player_get_next_event_time (player); - player->timeouts = g_list_remove (player->timeouts, timeout); + priv->timeouts = g_list_remove (priv->timeouts, timeout); if (next_tick != swfdec_player_get_next_event_time (player)) g_object_notify (G_OBJECT (player), "next-event"); } @@ -364,18 +370,19 @@ swfdec_player_compress_actions (SwfdecRingBuffer *buffer) static void swfdec_player_do_add_action (SwfdecPlayer *player, guint importance, SwfdecPlayerAction *act) { - SwfdecPlayerAction *action = swfdec_ring_buffer_push (player->actions[importance]); + SwfdecPlayerPrivate *priv = player->priv; + SwfdecPlayerAction *action = swfdec_ring_buffer_push (priv->actions[importance]); if (action == NULL) { /* try to get rid of freed actions */ - swfdec_player_compress_actions (player->actions[importance]); - action = swfdec_ring_buffer_push (player->actions[importance]); + swfdec_player_compress_actions (priv->actions[importance]); + action = swfdec_ring_buffer_push (priv->actions[importance]); if (action == NULL) { - if (swfdec_ring_buffer_get_size (player->actions[importance]) == 256) { + if (swfdec_ring_buffer_get_size (priv->actions[importance]) == 256) { SWFDEC_WARNING ("256 levels of recursion were exceeded in one action list."); } - swfdec_ring_buffer_set_size (player->actions[importance], - swfdec_ring_buffer_get_size (player->actions[importance]) + 16); - action = swfdec_ring_buffer_push (player->actions[importance]); + swfdec_ring_buffer_set_size (priv->actions[importance], + swfdec_ring_buffer_get_size (priv->actions[importance]) + 16); + action = swfdec_ring_buffer_push (priv->actions[importance]); g_assert (action); } } @@ -435,14 +442,16 @@ void swfdec_player_remove_all_actions (SwfdecPlayer *player, SwfdecMovie *movie) { SwfdecPlayerAction *action; + SwfdecPlayerPrivate *priv; guint i, j; g_return_if_fail (SWFDEC_IS_PLAYER (player)); g_return_if_fail (SWFDEC_IS_MOVIE (movie)); + priv = player->priv; for (i = 0; i < SWFDEC_PLAYER_N_ACTION_QUEUES; i++) { - for (j = 0; j < swfdec_ring_buffer_get_n_elements (player->actions[i]); j++) { - action = swfdec_ring_buffer_peek_nth (player->actions[i], j); + for (j = 0; j < swfdec_ring_buffer_get_n_elements (priv->actions[i]); j++) { + action = swfdec_ring_buffer_peek_nth (priv->actions[i], j); if (action->movie == movie) { SWFDEC_LOG ("removing action %p %u", @@ -457,11 +466,13 @@ static gboolean swfdec_player_do_action (SwfdecPlayer *player) { SwfdecPlayerAction *action; + SwfdecPlayerPrivate *priv; guint i; + priv = player->priv; for (i = 0; i < SWFDEC_PLAYER_N_ACTION_QUEUES; i++) { do { - action = swfdec_ring_buffer_pop (player->actions[i]); + action = swfdec_ring_buffer_pop (priv->actions[i]); if (action == NULL) break; } while (action->movie == NULL); /* skip removed actions */ @@ -483,18 +494,19 @@ static void swfdec_player_perform_external_actions (SwfdecPlayer *player) { SwfdecPlayerExternalAction *action; + SwfdecPlayerPrivate *priv = player->priv; guint i; /* remove timeout if it exists - do this before executing stuff below */ - if (player->external_timeout.callback) { - swfdec_player_remove_timeout (player, &player->external_timeout); - player->external_timeout.callback = NULL; + if (priv->external_timeout.callback) { + swfdec_player_remove_timeout (player, &priv->external_timeout); + priv->external_timeout.callback = NULL; } /* we need to query the number of current actions so newly added ones aren't * executed in here */ - for (i = swfdec_ring_buffer_get_n_elements (player->external_actions); i > 0; i--) { - action = swfdec_ring_buffer_pop (player->external_actions); + for (i = swfdec_ring_buffer_get_n_elements (priv->external_actions); i > 0; i--) { + action = swfdec_ring_buffer_pop (priv->external_actions); g_assert (action != NULL); /* skip removed actions */ if (action->object == NULL) @@ -507,10 +519,10 @@ swfdec_player_perform_external_actions (SwfdecPlayer *player) static void swfdec_player_trigger_external_actions (SwfdecTimeout *advance) { - SwfdecPlayer *player = SWFDEC_PLAYER ((void *) ((guint8 *) advance - G_STRUCT_OFFSET (SwfdecPlayer, external_timeout))); + SwfdecPlayerPrivate *priv = (SwfdecPlayerPrivate *) ((void *) ((guint8 *) advance - G_STRUCT_OFFSET (SwfdecPlayerPrivate, external_timeout))); - player->external_timeout.callback = NULL; - swfdec_player_perform_external_actions (player); + priv->external_timeout.callback = NULL; + swfdec_player_perform_external_actions (priv->player); } void @@ -518,38 +530,40 @@ swfdec_player_add_external_action (SwfdecPlayer *player, gpointer object, SwfdecActionFunc action_func, gpointer action_data) { SwfdecPlayerExternalAction *action; + SwfdecPlayerPrivate *priv; g_return_if_fail (SWFDEC_IS_PLAYER (player)); g_return_if_fail (object != NULL); g_return_if_fail (action_func != NULL); SWFDEC_LOG ("adding external action %p %p %p", object, action_func, action_data); - action = swfdec_ring_buffer_push (player->external_actions); + priv = player->priv; + action = swfdec_ring_buffer_push (priv->external_actions); if (action == NULL) { /* FIXME: limit number of actions to not get inf loops due to scripts? */ - swfdec_ring_buffer_set_size (player->external_actions, - swfdec_ring_buffer_get_size (player->external_actions) + 16); - action = swfdec_ring_buffer_push (player->external_actions); + swfdec_ring_buffer_set_size (priv->external_actions, + swfdec_ring_buffer_get_size (priv->external_actions) + 16); + action = swfdec_ring_buffer_push (priv->external_actions); g_assert (action); } action->object = object; action->func = action_func; action->data = action_data; - if (!player->external_timeout.callback) { + if (!priv->external_timeout.callback) { /* trigger execution immediately. * But if initialized, keep at least 100ms from when the last external * timeout triggered. This is a crude method to get around infinite loops * when script actions executed by external actions trigger another external * action that would execute instantly. */ - if (player->initialized) { - player->external_timeout.timestamp = MAX (player->time, - player->external_timeout.timestamp + SWFDEC_MSECS_TO_TICKS (100)); + if (priv->initialized) { + priv->external_timeout.timestamp = MAX (priv->time, + priv->external_timeout.timestamp + SWFDEC_MSECS_TO_TICKS (100)); } else { - player->external_timeout.timestamp = player->time; + priv->external_timeout.timestamp = priv->time; } - player->external_timeout.callback = swfdec_player_trigger_external_actions; - swfdec_player_add_timeout (player, &player->external_timeout); + priv->external_timeout.callback = swfdec_player_trigger_external_actions; + swfdec_player_add_timeout (player, &priv->external_timeout); } } @@ -557,13 +571,15 @@ void swfdec_player_remove_all_external_actions (SwfdecPlayer *player, gpointer object) { SwfdecPlayerExternalAction *action; + SwfdecPlayerPrivate *priv; guint i; g_return_if_fail (SWFDEC_IS_PLAYER (player)); g_return_if_fail (object != NULL); - for (i = 0; i < swfdec_ring_buffer_get_n_elements (player->external_actions); i++) { - action = swfdec_ring_buffer_peek_nth (player->external_actions, i); + priv = player->priv; + for (i = 0; i < swfdec_ring_buffer_get_n_elements (priv->external_actions); i++) { + action = swfdec_ring_buffer_peek_nth (priv->external_actions, i); if (action->object == object) { SWFDEC_LOG ("removing external action %p %p %p", @@ -612,8 +628,10 @@ G_DEFINE_TYPE (SwfdecPlayer, swfdec_player, SWFDEC_TYPE_AS_CONTEXT) void swfdec_player_remove_movie (SwfdecPlayer *player, SwfdecMovie *movie) { + SwfdecPlayerPrivate *priv = player->priv; + swfdec_movie_remove (movie); - player->movies = g_list_remove (player->movies, movie); + priv->movies = g_list_remove (priv->movies, movie); } static guint @@ -668,49 +686,50 @@ swfdec_player_get_property (GObject *object, guint param_id, GValue *value, GParamSpec * pspec) { SwfdecPlayer *player = SWFDEC_PLAYER (object); + SwfdecPlayerPrivate *priv = player->priv; switch (param_id) { case PROP_BACKGROUND_COLOR: g_value_set_uint (value, swfdec_player_get_background_color (player)); break; case PROP_CACHE_SIZE: - g_value_set_uint (value, player->cache->max_size); + g_value_set_uint (value, priv->cache->max_size); break; case PROP_INITIALIZED: g_value_set_boolean (value, swfdec_player_is_initialized (player)); break; case PROP_DEFAULT_WIDTH: - g_value_set_uint (value, player->width); + g_value_set_uint (value, priv->width); break; case PROP_DEFAULT_HEIGHT: - g_value_set_uint (value, player->height); + g_value_set_uint (value, priv->height); break; case PROP_RATE: - g_value_set_double (value, player->rate / 256.0); + g_value_set_double (value, priv->rate / 256.0); break; case PROP_MOUSE_CURSOR: - g_value_set_enum (value, player->mouse_cursor); + g_value_set_enum (value, priv->mouse_cursor); break; case PROP_NEXT_EVENT: g_value_set_uint (value, swfdec_player_get_next_event (player)); break; case PROP_WIDTH: - g_value_set_int (value, player->stage_width); + g_value_set_int (value, priv->stage_width); break; case PROP_HEIGHT: - g_value_set_int (value, player->stage_height); + g_value_set_int (value, priv->stage_height); break; case PROP_ALIGNMENT: - g_value_set_enum (value, swfdec_player_alignment_from_flags (player->align_flags)); + g_value_set_enum (value, swfdec_player_alignment_from_flags (priv->align_flags)); break; case PROP_SCALE: - g_value_set_enum (value, player->scale_mode); + g_value_set_enum (value, priv->scale_mode); break; case PROP_SYSTEM: - g_value_set_object (value, player->system); + g_value_set_object (value, priv->system); break; case PROP_MAX_RUNTIME: - g_value_set_ulong (value, player->max_runtime); + g_value_set_ulong (value, priv->max_runtime); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); @@ -721,69 +740,70 @@ swfdec_player_get_property (GObject *object, guint param_id, GValue *value, void swfdec_player_update_scale (SwfdecPlayer *player) { + SwfdecPlayerPrivate *priv = player->priv; int width, height; double scale_x, scale_y; - player->stage.width = player->stage_width >= 0 ? player->stage_width : (int) player->width; - player->stage.height = player->stage_height >= 0 ? player->stage_height : (int) player->height; - if (player->stage.height == 0 || player->stage.width == 0) { - player->scale_x = 1.0; - player->scale_y = 1.0; - player->offset_x = 0; - player->offset_y = 0; + priv->stage.width = priv->stage_width >= 0 ? priv->stage_width : (int) priv->width; + priv->stage.height = priv->stage_height >= 0 ? priv->stage_height : (int) priv->height; + if (priv->stage.height == 0 || priv->stage.width == 0) { + priv->scale_x = 1.0; + priv->scale_y = 1.0; + priv->offset_x = 0; + priv->offset_y = 0; return; } - if (player->width == 0 || player->height == 0) { + if (priv->width == 0 || priv->height == 0) { scale_x = 1.0; scale_y = 1.0; } else { - scale_x = (double) player->stage.width / player->width; - scale_y = (double) player->stage.height / player->height; + scale_x = (double) priv->stage.width / priv->width; + scale_y = (double) priv->stage.height / priv->height; } - switch (player->scale_mode) { + switch (priv->scale_mode) { case SWFDEC_SCALE_SHOW_ALL: - player->scale_x = MIN (scale_x, scale_y); - player->scale_y = player->scale_x; + priv->scale_x = MIN (scale_x, scale_y); + priv->scale_y = priv->scale_x; break; case SWFDEC_SCALE_NO_BORDER: - player->scale_x = MAX (scale_x, scale_y); - player->scale_y = player->scale_x; + priv->scale_x = MAX (scale_x, scale_y); + priv->scale_y = priv->scale_x; break; case SWFDEC_SCALE_EXACT_FIT: - player->scale_x = scale_x; - player->scale_y = scale_y; + priv->scale_x = scale_x; + priv->scale_y = scale_y; break; case SWFDEC_SCALE_NONE: - player->scale_x = 1.0; - player->scale_y = 1.0; + priv->scale_x = 1.0; + priv->scale_y = 1.0; break; default: g_assert_not_reached (); } - width = player->stage.width - ceil (player->width * player->scale_x); - height = player->stage.height - ceil (player->height * player->scale_y); - if (player->align_flags & SWFDEC_ALIGN_FLAG_LEFT) { - player->offset_x = 0; - } else if (player->align_flags & SWFDEC_ALIGN_FLAG_RIGHT) { - player->offset_x = width; + width = priv->stage.width - ceil (priv->width * priv->scale_x); + height = priv->stage.height - ceil (priv->height * priv->scale_y); + if (priv->align_flags & SWFDEC_ALIGN_FLAG_LEFT) { + priv->offset_x = 0; + } else if (priv->align_flags & SWFDEC_ALIGN_FLAG_RIGHT) { + priv->offset_x = width; } else { - player->offset_x = width / 2; + priv->offset_x = width / 2; } - if (player->align_flags & SWFDEC_ALIGN_FLAG_TOP) { - player->offset_y = 0; - } else if (player->align_flags & SWFDEC_ALIGN_FLAG_BOTTOM) { - player->offset_y = height; + if (priv->align_flags & SWFDEC_ALIGN_FLAG_TOP) { + priv->offset_y = 0; + } else if (priv->align_flags & SWFDEC_ALIGN_FLAG_BOTTOM) { + priv->offset_y = height; } else { - player->offset_y = height / 2; + priv->offset_y = height / 2; } SWFDEC_LOG ("coordinate translation is %g * x + %d - %g * y + %d", - player->scale_x, player->offset_x, player->scale_y, player->offset_y); + priv->scale_x, priv->offset_x, priv->scale_y, priv->offset_y); #if 0 /* FIXME: make this emit the signal at the right time */ - player->invalid.x0 = 0; - player->invalid.y0 = 0; - player->invalid.x1 = player->stage_width; - player->invalid.y1 = player->stage_height; + priv->invalid.x0 = 0; + priv->invalid.y0 = 0; + priv->invalid.x1 = priv->stage_width; + priv->invalid.y1 = priv->stage_height; #endif } @@ -792,33 +812,34 @@ swfdec_player_set_property (GObject *object, guint param_id, const GValue *value GParamSpec *pspec) { SwfdecPlayer *player = SWFDEC_PLAYER (object); + SwfdecPlayerPrivate *priv = player->priv; switch (param_id) { case PROP_BACKGROUND_COLOR: swfdec_player_set_background_color (player, g_value_get_uint (value)); break; case PROP_CACHE_SIZE: - player->cache->max_size = g_value_get_uint (value); + priv->cache->max_size = g_value_get_uint (value); break; case PROP_WIDTH: - swfdec_player_set_size (player, g_value_get_int (value), player->stage_height); + swfdec_player_set_size (player, g_value_get_int (value), priv->stage_height); break; case PROP_HEIGHT: - swfdec_player_set_size (player, player->stage_width, g_value_get_int (value)); + swfdec_player_set_size (player, priv->stage_width, g_value_get_int (value)); break; case PROP_ALIGNMENT: - player->align_flags = swfdec_player_alignment_to_flags (g_value_get_enum (value)); + priv->align_flags = swfdec_player_alignment_to_flags (g_value_get_enum (value)); swfdec_player_update_scale (player); break; case PROP_SCALE: swfdec_player_set_scale_mode (player, g_value_get_enum (value)); break; case PROP_SYSTEM: - g_object_unref (player->system); + g_object_unref (priv->system); if (g_value_get_object (value)) { - player->system = SWFDEC_SYSTEM (g_value_dup_object (value)); + priv->system = SWFDEC_SYSTEM (g_value_dup_object (value)); } else { - player->system = swfdec_system_new (); + priv->system = swfdec_system_new (); } break; case PROP_MAX_RUNTIME: @@ -834,20 +855,21 @@ static void swfdec_player_dispose (GObject *object) { SwfdecPlayer *player = SWFDEC_PLAYER (object); + SwfdecPlayerPrivate *priv = player->priv; guint i; swfdec_player_stop_all_sounds (player); swfdec_player_resource_request_finish (player); - g_hash_table_destroy (player->registered_classes); + g_hash_table_destroy (priv->registered_classes); - while (player->roots) - swfdec_movie_destroy (player->roots->data); - if (player->resource) { - g_object_unref (player->resource); - player->resource = NULL; + while (priv->roots) + swfdec_movie_destroy (priv->roots->data); + if (priv->resource) { + g_object_unref (priv->resource); + priv->resource = NULL; } - while (player->rooted_objects) - swfdec_player_unroot_object (player, player->rooted_objects->data); + while (priv->rooted_objects) + swfdec_player_unroot_object (player, priv->rooted_objects->data); /* we do this here so references to GC'd objects get freed */ G_OBJECT_CLASS (swfdec_player_parent_class)->dispose (object); @@ -856,43 +878,43 @@ swfdec_player_dispose (GObject *object) #ifndef G_DISABLE_ASSERT { SwfdecPlayerExternalAction *action; - while ((action = swfdec_ring_buffer_pop (player->external_actions)) != NULL) { + while ((action = swfdec_ring_buffer_pop (priv->external_actions)) != NULL) { g_assert (action->object == NULL); /* skip removed actions */ } } { SwfdecPlayerAction *action; for (i = 0; i < SWFDEC_PLAYER_N_ACTION_QUEUES; i++) { - while ((action = swfdec_ring_buffer_pop (player->actions[i])) != NULL) { + while ((action = swfdec_ring_buffer_pop (priv->actions[i])) != NULL) { g_assert (action->movie == NULL); /* skip removed actions */ } } } #endif - swfdec_ring_buffer_free (player->external_actions); + swfdec_ring_buffer_free (priv->external_actions); for (i = 0; i < SWFDEC_PLAYER_N_ACTION_QUEUES; i++) { - swfdec_ring_buffer_free (player->actions[i]); + swfdec_ring_buffer_free (priv->actions[i]); } - g_assert (player->movies == NULL); - g_assert (player->audio == NULL); - if (player->external_timeout.callback) - swfdec_player_remove_timeout (player, &player->external_timeout); - if (player->rate) { - swfdec_player_remove_timeout (player, &player->iterate_timeout); + g_assert (priv->movies == NULL); + g_assert (priv->audio == NULL); + if (priv->external_timeout.callback) + swfdec_player_remove_timeout (player, &priv->external_timeout); + if (priv->rate) { + swfdec_player_remove_timeout (player, &priv->iterate_timeout); } - g_assert (player->timeouts == NULL); - g_list_free (player->intervals); - player->intervals = NULL; - swfdec_cache_unref (player->cache); - if (player->system) { - g_object_unref (player->system); - player->system = NULL; + g_assert (priv->timeouts == NULL); + g_list_free (priv->intervals); + priv->intervals = NULL; + swfdec_cache_unref (priv->cache); + if (priv->system) { + g_object_unref (priv->system); + priv->system = NULL; } - g_array_free (player->invalidations, TRUE); - player->invalidations = NULL; - if (player->runtime) { - g_timer_destroy (player->runtime); - player->runtime = NULL; + g_array_free (priv->invalidations, TRUE); + priv->invalidations = NULL; + if (priv->runtime) { + g_timer_destroy (priv->runtime); + priv->runtime = NULL; } } @@ -915,21 +937,22 @@ swfdec_player_broadcast (SwfdecPlayer *player, const char *object_name, const ch static void swfdec_player_update_mouse_cursor (SwfdecPlayer *player) { + SwfdecPlayerPrivate *priv = player->priv; SwfdecMouseCursor new = SWFDEC_MOUSE_CURSOR_NORMAL; - if (!player->mouse_visible) { + if (!priv->mouse_visible) { new = SWFDEC_MOUSE_CURSOR_NONE; - } else if (player->mouse_grab != NULL) { - SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (player->mouse_grab); + } else if (priv->mouse_grab != NULL) { + SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (priv->mouse_grab); if (klass->mouse_cursor) - new = klass->mouse_cursor (player->mouse_grab); + new = klass->mouse_cursor (priv->mouse_grab); else new = SWFDEC_MOUSE_CURSOR_CLICK; } - if (new != player->mouse_cursor) { - player->mouse_cursor = new; + if (new != priv->mouse_cursor) { + priv->mouse_cursor = new; g_object_notify (G_OBJECT (player), "mouse-cursor"); } } @@ -937,29 +960,30 @@ swfdec_player_update_mouse_cursor (SwfdecPlayer *player) static void swfdec_player_update_drag_movie (SwfdecPlayer *player) { + SwfdecPlayerPrivate *priv = player->priv; double x, y; SwfdecMovie *movie; - if (player->mouse_drag == NULL) + if (priv->mouse_drag == NULL) return; - movie = player->mouse_drag; + movie = priv->mouse_drag; g_assert (movie->cache_state == SWFDEC_MOVIE_UP_TO_DATE); - x = player->mouse_x; - y = player->mouse_y; + x = priv->mouse_x; + y = priv->mouse_y; swfdec_player_stage_to_global (player, &x, &y); if (movie->parent) swfdec_movie_global_to_local (movie->parent, &x, &y); - if (player->mouse_drag_center) { + if (priv->mouse_drag_center) { x -= (movie->extents.x1 - movie->extents.x0) / 2; y -= (movie->extents.y1 - movie->extents.y0) / 2; } else { - x -= player->mouse_drag_x; - y -= player->mouse_drag_y; + x -= priv->mouse_drag_x; + y -= priv->mouse_drag_y; } - x = CLAMP (x, player->mouse_drag_rect.x0, player->mouse_drag_rect.x1); - y = CLAMP (y, player->mouse_drag_rect.y0, player->mouse_drag_rect.y1); - SWFDEC_LOG ("mouse is at %g %g, originally (%g %g)", x, y, player->mouse_x, player->mouse_y); + x = CLAMP (x, priv->mouse_drag_rect.x0, priv->mouse_drag_rect.x1); + y = CLAMP (y, priv->mouse_drag_rect.y0, priv->mouse_drag_rect.y1); + SWFDEC_LOG ("mouse is at %g %g, originally (%g %g)", x, y, priv->mouse_x, priv->mouse_y); if (x != movie->matrix.x0 || y != movie->matrix.y0) { swfdec_movie_queue_update (movie, SWFDEC_MOVIE_INVALID_MATRIX); movie->matrix.x0 = x; @@ -982,32 +1006,35 @@ void swfdec_player_set_drag_movie (SwfdecPlayer *player, SwfdecMovie *drag, gboolean center, SwfdecRect *rect) { + SwfdecPlayerPrivate *priv; + g_return_if_fail (SWFDEC_IS_PLAYER (player)); g_return_if_fail (drag == NULL || SWFDEC_IS_MOVIE (drag)); /* FIXME: need to do anything with old drag? */ - player->mouse_drag = drag; - player->mouse_drag_center = center; + priv = player->priv; + priv->mouse_drag = drag; + priv->mouse_drag_center = center; if (drag && !center) { - player->mouse_drag_x = player->mouse_x; - player->mouse_drag_y = player->mouse_y; - swfdec_player_stage_to_global (player, &player->mouse_drag_x, &player->mouse_drag_y); + priv->mouse_drag_x = priv->mouse_x; + priv->mouse_drag_y = priv->mouse_y; + swfdec_player_stage_to_global (player, &priv->mouse_drag_x, &priv->mouse_drag_y); if (drag->parent) - swfdec_movie_global_to_local (drag->parent, &player->mouse_drag_x, &player->mouse_drag_y); - player->mouse_drag_x -= drag->matrix.x0; - player->mouse_drag_y -= drag->matrix.y0; + swfdec_movie_global_to_local (drag->parent, &priv->mouse_drag_x, &priv->mouse_drag_y); + priv->mouse_drag_x -= drag->matrix.x0; + priv->mouse_drag_y -= drag->matrix.y0; } if (rect) { - player->mouse_drag_rect = *rect; + priv->mouse_drag_rect = *rect; } else { - player->mouse_drag_rect.x0 = -G_MAXDOUBLE; - player->mouse_drag_rect.y0 = -G_MAXDOUBLE; - player->mouse_drag_rect.x1 = G_MAXDOUBLE; - player->mouse_drag_rect.y1 = G_MAXDOUBLE; + priv->mouse_drag_rect.x0 = -G_MAXDOUBLE; + priv->mouse_drag_rect.y0 = -G_MAXDOUBLE; + priv->mouse_drag_rect.x1 = G_MAXDOUBLE; + priv->mouse_drag_rect.y1 = G_MAXDOUBLE; } SWFDEC_DEBUG ("starting drag in %g %g %g %g", - player->mouse_drag_rect.x0, player->mouse_drag_rect.y0, - player->mouse_drag_rect.x1, player->mouse_drag_rect.y1); + priv->mouse_drag_rect.x0, priv->mouse_drag_rect.y0, + priv->mouse_drag_rect.x1, priv->mouse_drag_rect.y1); /* FIXME: need a way to make sure we get updated */ if (drag) { swfdec_movie_update (drag); @@ -1019,14 +1046,15 @@ swfdec_player_set_drag_movie (SwfdecPlayer *player, SwfdecMovie *drag, gboolean static void swfdec_player_grab_mouse_movie (SwfdecPlayer *player) { + SwfdecPlayerPrivate *priv = player->priv; GList *walk; double x, y; SwfdecMovie *below_mouse = NULL; - x = player->mouse_x; - y = player->mouse_y; + x = priv->mouse_x; + y = priv->mouse_y; swfdec_player_stage_to_global (player, &x, &y); - for (walk = g_list_last (player->roots); walk; walk = walk->prev) { + for (walk = g_list_last (priv->roots); walk; walk = walk->prev) { below_mouse = swfdec_movie_get_movie_at (walk->data, x, y, TRUE); if (below_mouse) { if (swfdec_movie_get_mouse_events (below_mouse)) @@ -1036,26 +1064,26 @@ swfdec_player_grab_mouse_movie (SwfdecPlayer *player) } if (swfdec_player_is_mouse_pressed (player)) { /* a mouse grab is active */ - if (player->mouse_grab) { - if (below_mouse == player->mouse_grab && - player->mouse_below != player->mouse_grab) { - SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (player->mouse_grab); + if (priv->mouse_grab) { + if (below_mouse == priv->mouse_grab && + priv->mouse_below != priv->mouse_grab) { + SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (priv->mouse_grab); if (klass->mouse_in) - klass->mouse_in (player->mouse_grab); - } else if (below_mouse != player->mouse_grab && - player->mouse_below == player->mouse_grab) { - SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (player->mouse_grab); + klass->mouse_in (priv->mouse_grab); + } else if (below_mouse != priv->mouse_grab && + priv->mouse_below == priv->mouse_grab) { + SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (priv->mouse_grab); if (klass->mouse_out) - klass->mouse_out (player->mouse_grab); + klass->mouse_out (priv->mouse_grab); } } } else { /* no mouse grab is active */ - if (below_mouse != player->mouse_grab) { - if (player->mouse_grab) { - SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (player->mouse_grab); + if (below_mouse != priv->mouse_grab) { + if (priv->mouse_grab) { + SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (priv->mouse_grab); if (klass->mouse_out) - klass->mouse_out (player->mouse_grab); + klass->mouse_out (priv->mouse_grab); } if (below_mouse) { SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (below_mouse); @@ -1063,23 +1091,24 @@ swfdec_player_grab_mouse_movie (SwfdecPlayer *player) klass->mouse_in (below_mouse); } } - player->mouse_grab = below_mouse; + priv->mouse_grab = below_mouse; } - player->mouse_below = below_mouse; + priv->mouse_below = below_mouse; SWFDEC_DEBUG ("%s %p has mouse at %g %g", - player->mouse_grab ? G_OBJECT_TYPE_NAME (player->mouse_grab) : "---", - player->mouse_grab, player->mouse_x, player->mouse_y); + priv->mouse_grab ? G_OBJECT_TYPE_NAME (priv->mouse_grab) : "---", + priv->mouse_grab, priv->mouse_x, priv->mouse_y); } static gboolean swfdec_player_do_mouse_move (SwfdecPlayer *player, double x, double y) { + SwfdecPlayerPrivate *priv = player->priv; GList *walk; - if (player->mouse_x != x || player->mouse_y != y) { - player->mouse_x = x; - player->mouse_y = y; - for (walk = player->movies; walk; walk = walk->next) { + if (priv->mouse_x != x || priv->mouse_y != y) { + priv->mouse_x = x; + priv->mouse_y = y; + for (walk = priv->movies; walk; walk = walk->next) { swfdec_movie_queue_script (walk->data, SWFDEC_EVENT_MOUSE_MOVE); } swfdec_player_broadcast (player, SWFDEC_AS_STR_Mouse, SWFDEC_AS_STR_onMouseMove); @@ -1094,19 +1123,20 @@ swfdec_player_do_mouse_move (SwfdecPlayer *player, double x, double y) static gboolean swfdec_player_do_mouse_press (SwfdecPlayer *player, guint button) { + SwfdecPlayerPrivate *priv = player->priv; GList *walk; - player->mouse_button |= 1 << button; + priv->mouse_button |= 1 << button; if (button == 0) { - for (walk = player->movies; walk; walk = walk->next) { + for (walk = priv->movies; walk; walk = walk->next) { swfdec_movie_queue_script (walk->data, SWFDEC_EVENT_MOUSE_DOWN); } swfdec_player_broadcast (player, SWFDEC_AS_STR_Mouse, SWFDEC_AS_STR_onMouseDown); } - if (player->mouse_grab) { - SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (player->mouse_grab); + if (priv->mouse_grab) { + SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (priv->mouse_grab); if (klass->mouse_press) - klass->mouse_press (player->mouse_grab, button); + klass->mouse_press (priv->mouse_grab, button); } /* FIXME: allow events to pass through */ @@ -1116,25 +1146,26 @@ swfdec_player_do_mouse_press (SwfdecPlayer *player, guint button) static gboolean swfdec_player_do_mouse_release (SwfdecPlayer *player, guint button) { + SwfdecPlayerPrivate *priv = player->priv; GList *walk; - player->mouse_button &= ~(1 << button); + priv->mouse_button &= ~(1 << button); if (button == 0) { - for (walk = player->movies; walk; walk = walk->next) { + for (walk = priv->movies; walk; walk = walk->next) { swfdec_movie_queue_script (walk->data, SWFDEC_EVENT_MOUSE_UP); } swfdec_player_broadcast (player, SWFDEC_AS_STR_Mouse, SWFDEC_AS_STR_onMouseUp); } - if (player->mouse_grab) { - SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (player->mouse_grab); + if (priv->mouse_grab) { + SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (priv->mouse_grab); if (klass->mouse_release) - klass->mouse_release (player->mouse_grab, button); - if (button == 0 && player->mouse_grab != player->mouse_below) { - player->mouse_grab = player->mouse_below; - if (player->mouse_grab) { - klass = SWFDEC_MOVIE_GET_CLASS (player->mouse_grab); + klass->mouse_release (priv->mouse_grab, button); + if (button == 0 && priv->mouse_grab != priv->mouse_below) { + priv->mouse_grab = priv->mouse_below; + if (priv->mouse_grab) { + klass = SWFDEC_MOVIE_GET_CLASS (priv->mouse_grab); if (klass->mouse_in) - klass->mouse_in (player->mouse_grab); + klass->mouse_in (priv->mouse_grab); } } } @@ -1146,18 +1177,19 @@ swfdec_player_do_mouse_release (SwfdecPlayer *player, guint button) static void swfdec_player_emit_signals (SwfdecPlayer *player) { + SwfdecPlayerPrivate *priv = player->priv; GList *walk; /* emit invalidate signal */ - if (!swfdec_rectangle_is_empty (&player->invalid_extents)) { - g_signal_emit (player, signals[INVALIDATE], 0, &player->invalid_extents, - player->invalidations->data, player->invalidations->len); - swfdec_rectangle_init_empty (&player->invalid_extents); - g_array_set_size (player->invalidations, 0); + if (!swfdec_rectangle_is_empty (&priv->invalid_extents)) { + g_signal_emit (player, signals[INVALIDATE], 0, &priv->invalid_extents, + priv->invalidations->data, priv->invalidations->len); + swfdec_rectangle_init_empty (&priv->invalid_extents); + g_array_set_size (priv->invalidations, 0); } /* emit audio-added for all added audio streams */ - for (walk = player->audio; walk; walk = walk->next) { + for (walk = priv->audio; walk; walk = walk->next) { SwfdecAudio *audio = walk->data; if (audio->added) @@ -1170,17 +1202,18 @@ swfdec_player_emit_signals (SwfdecPlayer *player) static gboolean swfdec_player_do_handle_key (SwfdecPlayer *player, guint keycode, guint character, gboolean down) { + SwfdecPlayerPrivate *priv = player->priv; g_assert (keycode < 256); if (!swfdec_player_lock (player)) return FALSE; /* set the correct variables */ - player->last_keycode = keycode; - player->last_character = character; + priv->last_keycode = keycode; + priv->last_character = character; if (down) { - player->key_pressed[keycode / 8] |= 1 << keycode % 8; + priv->key_pressed[keycode / 8] |= 1 << keycode % 8; } else { - player->key_pressed[keycode / 8] &= ~(1 << keycode % 8); + priv->key_pressed[keycode / 8] &= ~(1 << keycode % 8); } swfdec_player_broadcast (player, SWFDEC_AS_STR_Key, down ? SWFDEC_AS_STR_onKeyDown : SWFDEC_AS_STR_onKeyUp); swfdec_player_perform_actions (player); @@ -1214,23 +1247,27 @@ swfdec_player_do_handle_mouse (SwfdecPlayer *player, void swfdec_player_global_to_stage (SwfdecPlayer *player, double *x, double *y) { + SwfdecPlayerPrivate *priv = player->priv; + g_return_if_fail (SWFDEC_IS_PLAYER (player)); g_return_if_fail (x != NULL); g_return_if_fail (y != NULL); - *x = *x / SWFDEC_TWIPS_SCALE_FACTOR * player->scale_x + player->offset_x; - *y = *y / SWFDEC_TWIPS_SCALE_FACTOR * player->scale_y + player->offset_y; + *x = *x / SWFDEC_TWIPS_SCALE_FACTOR * priv->scale_x + priv->offset_x; + *y = *y / SWFDEC_TWIPS_SCALE_FACTOR * priv->scale_y + priv->offset_y; } void swfdec_player_stage_to_global (SwfdecPlayer *player, double *x, double *y) { + SwfdecPlayerPrivate *priv = player->priv; + g_return_if_fail (SWFDEC_IS_PLAYER (player)); g_return_if_fail (x != NULL); g_return_if_fail (y != NULL); - *x = (*x - player->offset_x) / player->scale_x * SWFDEC_TWIPS_SCALE_FACTOR; - *y = (*y - player->offset_y) / player->scale_y * SWFDEC_TWIPS_SCALE_FACTOR; + *x = (*x - priv->offset_x) / priv->scale_x * SWFDEC_TWIPS_SCALE_FACTOR; + *y = (*y - priv->offset_y) / priv->scale_y * SWFDEC_TWIPS_SCALE_FACTOR; } static void @@ -1240,7 +1277,7 @@ swfdec_player_execute_on_load_init (SwfdecPlayer *player) /* FIXME: This can be made a LOT faster with correct caching, but I'm lazy */ do { - for (walk = player->movies; walk; walk = walk->next) { + for (walk = player->priv->movies; walk; walk = walk->next) { SwfdecMovie *movie = walk->data; SwfdecResource *resource = swfdec_movie_get_own_resource (movie); if (resource == NULL) @@ -1254,19 +1291,20 @@ swfdec_player_execute_on_load_init (SwfdecPlayer *player) static void swfdec_player_iterate (SwfdecTimeout *timeout) { - SwfdecPlayer *player = SWFDEC_PLAYER ((void *) ((guint8 *) timeout - G_STRUCT_OFFSET (SwfdecPlayer, iterate_timeout))); + SwfdecPlayerPrivate *priv = (SwfdecPlayerPrivate *) ((void *) ((guint8 *) timeout - G_STRUCT_OFFSET (SwfdecPlayerPrivate, iterate_timeout))); + SwfdecPlayer *player = priv->player; GList *walk; /* add timeout again - do this first because later code can change it */ /* FIXME: rounding issues? */ - player->iterate_timeout.timestamp += SWFDEC_TICKS_PER_SECOND * 256 / player->rate; - swfdec_player_add_timeout (player, &player->iterate_timeout); + priv->iterate_timeout.timestamp += SWFDEC_TICKS_PER_SECOND * 256 / priv->rate; + swfdec_player_add_timeout (player, &priv->iterate_timeout); swfdec_player_perform_external_actions (player); SWFDEC_INFO ("=== START ITERATION ==="); /* start the iteration. This performs a goto next frame on all * movies that are not stopped. It also queues onEnterFrame. */ - for (walk = player->movies; walk; walk = walk->next) { + for (walk = priv->movies; walk; walk = walk->next) { SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (walk->data); if (klass->iterate_start) klass->iterate_start (walk->data); @@ -1274,7 +1312,7 @@ swfdec_player_iterate (SwfdecTimeout *timeout) swfdec_player_perform_actions (player); SWFDEC_INFO ("=== STOP ITERATION ==="); /* this loop allows removal of walk->data */ - walk = player->movies; + walk = priv->movies; while (walk) { SwfdecMovie *cur = walk->data; SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (cur); @@ -1299,7 +1337,7 @@ swfdec_player_advance_audio (SwfdecPlayer *player, guint samples) /* don't use for loop here, because we need to advance walk before * removing the audio */ - walk = player->audio; + walk = player->priv->audio; while (walk) { audio = walk->data; walk = walk->next; @@ -1311,6 +1349,7 @@ swfdec_player_advance_audio (SwfdecPlayer *player, guint samples) static void swfdec_player_do_advance (SwfdecPlayer *player, gulong msecs, guint audio_samples) { + SwfdecPlayerPrivate *priv = player->priv; SwfdecTimeout *timeout; SwfdecTick target_time; guint frames_now; @@ -1318,16 +1357,16 @@ swfdec_player_do_advance (SwfdecPlayer *player, gulong msecs, guint audio_sample if (!swfdec_player_lock (player)) return; - target_time = player->time + SWFDEC_MSECS_TO_TICKS (msecs); + target_time = priv->time + SWFDEC_MSECS_TO_TICKS (msecs); SWFDEC_DEBUG ("advancing %lu msecs (%u audio frames)", msecs, audio_samples); - for (timeout = player->timeouts ? player->timeouts->data : NULL; + for (timeout = priv->timeouts ? priv->timeouts->data : NULL; timeout && timeout->timestamp <= target_time; - timeout = player->timeouts ? player->timeouts->data : NULL) { - player->timeouts = g_list_remove (player->timeouts, timeout); + timeout = priv->timeouts ? priv->timeouts->data : NULL) { + priv->timeouts = g_list_remove (priv->timeouts, timeout); frames_now = SWFDEC_TICKS_TO_SAMPLES (timeout->timestamp) - - SWFDEC_TICKS_TO_SAMPLES (player->time); - player->time = timeout->timestamp; + SWFDEC_TICKS_TO_SAMPLES (priv->time); + priv->time = timeout->timestamp; swfdec_player_advance_audio (player, frames_now); audio_samples -= frames_now; SWFDEC_LOG ("activating timeout %p now (timeout is %"G_GUINT64_FORMAT", target time is %"G_GUINT64_FORMAT, @@ -1335,10 +1374,10 @@ swfdec_player_do_advance (SwfdecPlayer *player, gulong msecs, guint audio_sample timeout->callback (timeout); swfdec_player_perform_actions (player); } - if (target_time > player->time) { + if (target_time > priv->time) { frames_now = SWFDEC_TICKS_TO_SAMPLES (target_time) - - SWFDEC_TICKS_TO_SAMPLES (player->time); - player->time = target_time; + SWFDEC_TICKS_TO_SAMPLES (priv->time); + priv->time = target_time; swfdec_player_advance_audio (player, frames_now); audio_samples -= frames_now; } @@ -1360,10 +1399,10 @@ void swfdec_player_lock_soft (SwfdecPlayer *player) { g_return_if_fail (SWFDEC_IS_PLAYER (player)); - g_assert (swfdec_rectangle_is_empty (&player->invalid_extents)); + g_assert (swfdec_rectangle_is_empty (&player->priv->invalid_extents)); g_object_freeze_notify (G_OBJECT (player)); - g_timer_start (player->runtime); + g_timer_start (player->priv->runtime); SWFDEC_DEBUG ("LOCKED"); } @@ -1371,10 +1410,10 @@ gboolean swfdec_player_lock (SwfdecPlayer *player) { g_return_val_if_fail (SWFDEC_IS_PLAYER (player), FALSE); - g_assert (swfdec_ring_buffer_get_n_elements (player->actions[0]) == 0); - g_assert (swfdec_ring_buffer_get_n_elements (player->actions[1]) == 0); - g_assert (swfdec_ring_buffer_get_n_elements (player->actions[2]) == 0); - g_assert (swfdec_ring_buffer_get_n_elements (player->actions[3]) == 0); + g_assert (swfdec_ring_buffer_get_n_elements (player->priv->actions[0]) == 0); + g_assert (swfdec_ring_buffer_get_n_elements (player->priv->actions[1]) == 0); + g_assert (swfdec_ring_buffer_get_n_elements (player->priv->actions[2]) == 0); + g_assert (swfdec_ring_buffer_get_n_elements (player->priv->actions[3]) == 0); if (swfdec_as_context_is_aborted (SWFDEC_AS_CONTEXT (player))) return FALSE; @@ -1392,7 +1431,7 @@ swfdec_player_update_movies (SwfdecPlayer *player) GList *walk; /* FIXME: This g_list_last could be slow */ - for (walk = g_list_last (player->movies); walk; walk = walk->prev) { + for (walk = g_list_last (player->priv->movies); walk; walk = walk->prev) { movie = walk->data; swfdec_movie_update (movie); @@ -1416,7 +1455,7 @@ swfdec_player_unlock_soft (SwfdecPlayer *player) g_return_if_fail (SWFDEC_IS_PLAYER (player)); SWFDEC_DEBUG ("UNLOCK"); - g_timer_stop (player->runtime); + g_timer_stop (player->priv->runtime); swfdec_player_update_movies (player); swfdec_player_update_mouse_cursor (player); g_object_thaw_notify (G_OBJECT (player)); @@ -1429,10 +1468,10 @@ swfdec_player_unlock (SwfdecPlayer *player) SwfdecAsContext *context; g_return_if_fail (SWFDEC_IS_PLAYER (player)); - g_assert (swfdec_ring_buffer_get_n_elements (player->actions[0]) == 0); - g_assert (swfdec_ring_buffer_get_n_elements (player->actions[1]) == 0); - g_assert (swfdec_ring_buffer_get_n_elements (player->actions[2]) == 0); - g_assert (swfdec_ring_buffer_get_n_elements (player->actions[3]) == 0); + g_assert (swfdec_ring_buffer_get_n_elements (player->priv->actions[0]) == 0); + g_assert (swfdec_ring_buffer_get_n_elements (player->priv->actions[1]) == 0); + g_assert (swfdec_ring_buffer_get_n_elements (player->priv->actions[2]) == 0); + g_assert (swfdec_ring_buffer_get_n_elements (player->priv->actions[3]) == 0); context = SWFDEC_AS_CONTEXT (player); g_return_if_fail (context->state != SWFDEC_AS_CONTEXT_INTERRUPTED); @@ -1472,13 +1511,14 @@ static void swfdec_player_mark (SwfdecAsContext *context) { SwfdecPlayer *player = SWFDEC_PLAYER (context); + SwfdecPlayerPrivate *priv = player->priv; - g_hash_table_foreach (player->registered_classes, swfdec_player_mark_string_object, NULL); - swfdec_as_object_mark (player->MovieClip); - swfdec_as_object_mark (player->Video); - g_list_foreach (player->roots, (GFunc) swfdec_as_object_mark, NULL); - g_list_foreach (player->intervals, (GFunc) swfdec_as_object_mark, NULL); - g_list_foreach (player->rooted_objects, swfdec_player_mark_rooted_object, NULL); + g_hash_table_foreach (priv->registered_classes, swfdec_player_mark_string_object, NULL); + swfdec_as_object_mark (priv->MovieClip); + swfdec_as_object_mark (priv->Video); + g_list_foreach (priv->roots, (GFunc) swfdec_as_object_mark, NULL); + g_list_foreach (priv->intervals, (GFunc) swfdec_as_object_mark, NULL); + g_list_foreach (priv->rooted_objects, swfdec_player_mark_rooted_object, NULL); SWFDEC_AS_CONTEXT_CLASS (swfdec_player_parent_class)->mark (context); } @@ -1489,17 +1529,18 @@ swfdec_player_get_time (SwfdecAsContext *context, GTimeVal *tv) *tv = context->start_time; /* FIXME: what granularity do we want? Currently it's milliseconds */ - g_time_val_add (tv, SWFDEC_TICKS_TO_MSECS (SWFDEC_PLAYER (context)->time) * 1000); + g_time_val_add (tv, SWFDEC_TICKS_TO_MSECS (SWFDEC_PLAYER (context)->priv->time) * 1000); } static gboolean swfdec_player_check_continue (SwfdecAsContext *context) { SwfdecPlayer *player = SWFDEC_PLAYER (context); + SwfdecPlayerPrivate *priv = player->priv; - if (player->max_runtime == 0) + if (priv->max_runtime == 0) return TRUE; - return g_timer_elapsed (player->runtime, NULL) * 1000 <= player->max_runtime; + return g_timer_elapsed (priv->runtime, NULL) * 1000 <= priv->max_runtime; } static void @@ -1508,6 +1549,8 @@ swfdec_player_class_init (SwfdecPlayerClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); SwfdecAsContextClass *context_class = SWFDEC_AS_CONTEXT_CLASS (klass); + g_type_class_add_private (klass, sizeof (SwfdecPlayerPrivate)); + object_class->get_property = swfdec_player_get_property; object_class->set_property = swfdec_player_set_property; object_class->dispose = swfdec_player_dispose; @@ -1707,27 +1750,31 @@ swfdec_player_class_init (SwfdecPlayerClass *klass) static void swfdec_player_init (SwfdecPlayer *player) { + SwfdecPlayerPrivate *priv; guint i; - player->system = swfdec_system_new (); - player->registered_classes = g_hash_table_new (g_direct_hash, g_direct_equal); + player->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE (player, SWFDEC_TYPE_PLAYER, SwfdecPlayerPrivate); + priv->player = player; + + priv->system = swfdec_system_new (); + priv->registered_classes = g_hash_table_new (g_direct_hash, g_direct_equal); for (i = 0; i < SWFDEC_PLAYER_N_ACTION_QUEUES; i++) { - player->actions[i] = swfdec_ring_buffer_new_for_type (SwfdecPlayerAction, 16); - } - player->external_actions = swfdec_ring_buffer_new_for_type (SwfdecPlayerExternalAction, 8); - player->cache = swfdec_cache_new (50 * 1024 * 1024); /* 100 MB */ - player->bgcolor = SWFDEC_COLOR_COMBINE (0xFF, 0xFF, 0xFF, 0xFF); - - player->runtime = g_timer_new (); - g_timer_stop (player->runtime); - player->max_runtime = 10 * 1000; - player->invalidations = g_array_new (FALSE, FALSE, sizeof (SwfdecRectangle)); - player->mouse_visible = TRUE; - player->mouse_cursor = SWFDEC_MOUSE_CURSOR_NORMAL; - player->iterate_timeout.callback = swfdec_player_iterate; - player->stage_width = -1; - player->stage_height = -1; + priv->actions[i] = swfdec_ring_buffer_new_for_type (SwfdecPlayerAction, 16); + } + priv->external_actions = swfdec_ring_buffer_new_for_type (SwfdecPlayerExternalAction, 8); + priv->cache = swfdec_cache_new (50 * 1024 * 1024); /* 100 MB */ + priv->bgcolor = SWFDEC_COLOR_COMBINE (0xFF, 0xFF, 0xFF, 0xFF); + + priv->runtime = g_timer_new (); + g_timer_stop (priv->runtime); + priv->max_runtime = 10 * 1000; + priv->invalidations = g_array_new (FALSE, FALSE, sizeof (SwfdecRectangle)); + priv->mouse_visible = TRUE; + priv->mouse_cursor = SWFDEC_MOUSE_CURSOR_NORMAL; + priv->iterate_timeout.callback = swfdec_player_iterate; + priv->stage_width = -1; + priv->stage_height = -1; swfdec_player_resource_request_init (player); } @@ -1735,10 +1782,13 @@ swfdec_player_init (SwfdecPlayer *player) void swfdec_player_stop_all_sounds (SwfdecPlayer *player) { + SwfdecPlayerPrivate *priv; + g_return_if_fail (SWFDEC_IS_PLAYER (player)); - while (player->audio) { - swfdec_audio_remove (player->audio->data); + priv = player->priv; + while (priv->audio) { + swfdec_audio_remove (priv->audio->data); } } @@ -1750,7 +1800,7 @@ swfdec_player_stop_sounds (SwfdecPlayer *player, SwfdecAudioRemoveFunc func, gpo g_return_if_fail (SWFDEC_IS_PLAYER (player)); g_return_if_fail (func); - walk = player->audio; + walk = player->priv->audio; while (walk) { SwfdecAudio *audio = walk->data; walk = walk->next; @@ -1763,6 +1813,7 @@ swfdec_player_stop_sounds (SwfdecPlayer *player, SwfdecAudioRemoveFunc func, gpo void swfdec_player_invalidate (SwfdecPlayer *player, const SwfdecRect *rect) { + SwfdecPlayerPrivate *priv = player->priv; SwfdecRectangle r; SwfdecRect tmp; guint i; @@ -1777,31 +1828,31 @@ swfdec_player_invalidate (SwfdecPlayer *player, const SwfdecRect *rect) /* FIXME: currently we clamp the rectangle to the visible area, it might * be useful to allow out-of-bounds drawing. In that case this needs to be * changed */ - swfdec_rectangle_intersect (&r, &r, &player->stage); + swfdec_rectangle_intersect (&r, &r, &priv->stage); if (swfdec_rectangle_is_empty (&r)) return; SWFDEC_LOG (" invalidating %d %d %d %d", r.x, r.y, r.width, r.height); /* FIXME: get region code into swfdec? */ - for (i = 0; i < player->invalidations->len; i++) { - SwfdecRectangle *cur = &g_array_index (player->invalidations, SwfdecRectangle, i); + for (i = 0; i < priv->invalidations->len; i++) { + SwfdecRectangle *cur = &g_array_index (priv->invalidations, SwfdecRectangle, i); if (swfdec_rectangle_contains (cur, &r)) break; if (swfdec_rectangle_contains (&r, cur)) { *cur = r; - swfdec_rectangle_union (&player->invalid_extents, &player->invalid_extents, &r); + swfdec_rectangle_union (&priv->invalid_extents, &priv->invalid_extents, &r); } } - if (i == player->invalidations->len) { - g_array_append_val (player->invalidations, r); - swfdec_rectangle_union (&player->invalid_extents, &player->invalid_extents, &r); + if (i == priv->invalidations->len) { + g_array_append_val (priv->invalidations, r); + swfdec_rectangle_union (&priv->invalid_extents, &priv->invalid_extents, &r); } SWFDEC_DEBUG ("toplevel invalidation of %g %g %g %g - invalid region now %d %d %d %d (%u subregions)", rect->x0, rect->y0, rect->x1, rect->y1, - player->invalid_extents.x, player->invalid_extents.y, - player->invalid_extents.x + player->invalid_extents.width, - player->invalid_extents.y + player->invalid_extents.height, - player->invalidations->len); + priv->invalid_extents.x, priv->invalid_extents.y, + priv->invalid_extents.x + priv->invalid_extents.width, + priv->invalid_extents.y + priv->invalid_extents.height, + priv->invalidations->len); } /** @@ -1877,7 +1928,7 @@ swfdec_player_get_movie_at_level (SwfdecPlayer *player, int level) depth = level - 16384; /* find movie */ - for (walk = player->roots; walk; walk = walk->next) { + for (walk = player->priv->roots; walk; walk = walk->next) { SwfdecMovie *cur = walk->data; if (cur->depth < depth) continue; @@ -1919,10 +1970,13 @@ void swfdec_player_initialize (SwfdecPlayer *player, guint version, guint rate, guint width, guint height) { + SwfdecPlayerPrivate *priv; + g_return_if_fail (SWFDEC_IS_PLAYER (player)); g_return_if_fail (rate > 0); - if (!player->initialized) { + priv = player->priv; + if (!priv->initialized) { SwfdecAsContext *context = SWFDEC_AS_CONTEXT (player); swfdec_as_context_startup (context, version); /* reset state for initialization */ @@ -1938,37 +1992,37 @@ swfdec_player_initialize (SwfdecPlayer *player, guint version, if (context->state == SWFDEC_AS_CONTEXT_NEW) { context->state = SWFDEC_AS_CONTEXT_RUNNING; - swfdec_as_object_set_constructor (player->roots->data, player->MovieClip); + swfdec_as_object_set_constructor (priv->roots->data, priv->MovieClip); } } - player->initialized = TRUE; + priv->initialized = TRUE; g_object_notify (G_OBJECT (player), "initialized"); } else { /* FIXME: need to kick all other movies out here */ - swfdec_player_remove_timeout (player, &player->iterate_timeout); + swfdec_player_remove_timeout (player, &priv->iterate_timeout); } SWFDEC_INFO ("initializing player to size %ux%u and rate %u/256", width, height, rate); - if (rate != player->rate) { - player->rate = rate; + if (rate != priv->rate) { + priv->rate = rate; g_object_notify (G_OBJECT (player), "rate"); } - if (player->width != width) { - player->width = width; + if (priv->width != width) { + priv->width = width; g_object_notify (G_OBJECT (player), "default-width"); } - if (player->height != height) { - player->height = height; + if (priv->height != height) { + priv->height = height; g_object_notify (G_OBJECT (player), "default-height"); } - player->broadcasted_width = player->internal_width = player->stage_width >= 0 ? (guint) player->stage_width : player->width; - player->broadcasted_height = player->internal_height = player->stage_height >= 0 ? (guint) player->stage_height : player->height; + priv->broadcasted_width = priv->internal_width = priv->stage_width >= 0 ? (guint) priv->stage_width : priv->width; + priv->broadcasted_height = priv->internal_height = priv->stage_height >= 0 ? (guint) priv->stage_height : priv->height; swfdec_player_update_scale (player); - player->iterate_timeout.timestamp = player->time + SWFDEC_TICKS_PER_SECOND * 256 / player->rate / 10; - swfdec_player_add_timeout (player, &player->iterate_timeout); + priv->iterate_timeout.timestamp = priv->time + SWFDEC_TICKS_PER_SECOND * 256 / priv->rate / 10; + swfdec_player_add_timeout (player, &priv->iterate_timeout); SWFDEC_LOG ("initialized iterate timeout %p to %"G_GUINT64_FORMAT" (now %"G_GUINT64_FORMAT")", - &player->iterate_timeout, player->iterate_timeout.timestamp, player->time); + &priv->iterate_timeout, priv->iterate_timeout.timestamp, priv->time); } /** @@ -1983,14 +2037,15 @@ swfdec_player_initialize (SwfdecPlayer *player, guint version, SwfdecAsObject * swfdec_player_get_export_class (SwfdecPlayer *player, const char *name) { + SwfdecPlayerPrivate *priv = player->priv; SwfdecAsObject *ret; - ret = g_hash_table_lookup (player->registered_classes, name); + ret = g_hash_table_lookup (priv->registered_classes, name); if (ret) { SWFDEC_LOG ("found registered class %p for %s", ret, name); return ret; } - return player->MovieClip; + return priv->MovieClip; } /** @@ -2005,15 +2060,18 @@ swfdec_player_get_export_class (SwfdecPlayer *player, const char *name) void swfdec_player_set_export_class (SwfdecPlayer *player, const char *name, SwfdecAsObject *object) { + SwfdecPlayerPrivate *priv; + g_return_if_fail (SWFDEC_IS_PLAYER (player)); g_return_if_fail (name != NULL); g_return_if_fail (object == NULL || SWFDEC_IS_AS_OBJECT (object)); + priv = player->priv; if (object) { SWFDEC_LOG ("setting class %p for %s", object, name); - g_hash_table_insert (player->registered_classes, (gpointer) name, object); + g_hash_table_insert (priv->registered_classes, (gpointer) name, object); } else { - g_hash_table_remove (player->registered_classes, name); + g_hash_table_remove (priv->registered_classes, name); } } @@ -2025,24 +2083,28 @@ swfdec_player_set_export_class (SwfdecPlayer *player, const char *name, SwfdecAs void swfdec_player_root_object (SwfdecPlayer *player, GObject *object) { + SwfdecPlayerPrivate *priv; + g_return_if_fail (SWFDEC_IS_PLAYER (player)); g_return_if_fail (G_IS_OBJECT (object)); + priv = player->priv; g_object_ref (object); - player->rooted_objects = g_list_prepend (player->rooted_objects, object); + priv->rooted_objects = g_list_prepend (priv->rooted_objects, object); } void swfdec_player_unroot_object (SwfdecPlayer *player, GObject *object) { + SwfdecPlayerPrivate *priv = player->priv; GList *entry; g_return_if_fail (SWFDEC_IS_PLAYER (player)); g_return_if_fail (G_IS_OBJECT (object)); - entry = g_list_find (player->rooted_objects, object); + entry = g_list_find (priv->rooted_objects, object); g_return_if_fail (entry != NULL); g_object_unref (object); - player->rooted_objects = g_list_delete_link (player->rooted_objects, entry); + priv->rooted_objects = g_list_delete_link (priv->rooted_objects, entry); } /** PUBLIC API ***/ @@ -2089,7 +2151,7 @@ void swfdec_player_set_loader (SwfdecPlayer *player, SwfdecLoader *loader) { g_return_if_fail (SWFDEC_IS_PLAYER (player)); - g_return_if_fail (player->roots == NULL); + g_return_if_fail (player->priv->roots == NULL); g_return_if_fail (SWFDEC_IS_LOADER (loader)); swfdec_player_set_loader_with_variables (player, loader, NULL); @@ -2112,14 +2174,16 @@ void swfdec_player_set_loader_with_variables (SwfdecPlayer *player, SwfdecLoader *loader, const char *variables) { + SwfdecPlayerPrivate *priv; SwfdecMovie *movie; g_return_if_fail (SWFDEC_IS_PLAYER (player)); - g_return_if_fail (player->resource == NULL); + g_return_if_fail (player->priv->resource == NULL); g_return_if_fail (SWFDEC_IS_LOADER (loader)); - player->resource = swfdec_resource_new (player, loader, variables); - movie = swfdec_movie_new (player, -16384, NULL, player->resource, NULL, SWFDEC_AS_STR__level0); + priv = player->priv; + priv->resource = swfdec_resource_new (player, loader, variables); + movie = swfdec_movie_new (player, -16384, NULL, priv->resource, NULL, SWFDEC_AS_STR__level0); movie->name = SWFDEC_AS_STR_EMPTY; g_object_unref (loader); } @@ -2335,6 +2399,7 @@ swfdec_player_render (SwfdecPlayer *player, cairo_t *cr, double x, double y, double width, double height) { static const SwfdecColorTransform trans = { FALSE, 256, 0, 256, 0, 256, 0, 256, 0 }; + SwfdecPlayerPrivate *priv; GList *walk; SwfdecRect real; @@ -2347,30 +2412,31 @@ swfdec_player_render (SwfdecPlayer *player, cairo_t *cr, if (!swfdec_player_is_initialized (player)) return; + priv = player->priv; if (width == 0.0) - width = player->stage_width; + width = priv->stage_width; if (height == 0.0) - height = player->stage_height; + height = priv->stage_height; /* clip the area */ cairo_save (cr); cairo_rectangle (cr, x, y, width, height); cairo_clip (cr); /* compute the rectangle */ - x -= player->offset_x; - y -= player->offset_y; - real.x0 = floor (x * SWFDEC_TWIPS_SCALE_FACTOR) / player->scale_x; - real.y0 = floor (y * SWFDEC_TWIPS_SCALE_FACTOR) / player->scale_y; - real.x1 = ceil ((x + width) * SWFDEC_TWIPS_SCALE_FACTOR) / player->scale_x; - real.y1 = ceil ((y + height) * SWFDEC_TWIPS_SCALE_FACTOR) / player->scale_y; + x -= priv->offset_x; + y -= priv->offset_y; + real.x0 = floor (x * SWFDEC_TWIPS_SCALE_FACTOR) / priv->scale_x; + real.y0 = floor (y * SWFDEC_TWIPS_SCALE_FACTOR) / priv->scale_y; + real.x1 = ceil ((x + width) * SWFDEC_TWIPS_SCALE_FACTOR) / priv->scale_x; + real.y1 = ceil ((y + height) * SWFDEC_TWIPS_SCALE_FACTOR) / priv->scale_y; SWFDEC_INFO ("=== %p: START RENDER, area %g %g %g %g ===", player, real.x0, real.y0, real.x1, real.y1); /* convert the cairo matrix */ - cairo_translate (cr, player->offset_x, player->offset_y); - cairo_scale (cr, player->scale_x / SWFDEC_TWIPS_SCALE_FACTOR, player->scale_y / SWFDEC_TWIPS_SCALE_FACTOR); - swfdec_color_set_source (cr, player->bgcolor); + cairo_translate (cr, priv->offset_x, priv->offset_y); + cairo_scale (cr, priv->scale_x / SWFDEC_TWIPS_SCALE_FACTOR, priv->scale_y / SWFDEC_TWIPS_SCALE_FACTOR); + swfdec_color_set_source (cr, priv->bgcolor); cairo_paint (cr); - for (walk = player->roots; walk; walk = walk->next) { + for (walk = priv->roots; walk; walk = walk->next) { swfdec_movie_render (walk->data, cr, &trans, &real); } SWFDEC_INFO ("=== %p: END RENDER ===", player); @@ -2388,11 +2454,14 @@ swfdec_player_render (SwfdecPlayer *player, cairo_t *cr, void swfdec_player_advance (SwfdecPlayer *player, gulong msecs) { + SwfdecPlayerPrivate *priv; guint frames; + g_return_if_fail (SWFDEC_IS_PLAYER (player)); - frames = SWFDEC_TICKS_TO_SAMPLES (player->time + SWFDEC_MSECS_TO_TICKS (msecs)) - - SWFDEC_TICKS_TO_SAMPLES (player->time); + priv = player->priv; + frames = SWFDEC_TICKS_TO_SAMPLES (priv->time + SWFDEC_MSECS_TO_TICKS (msecs)) + - SWFDEC_TICKS_TO_SAMPLES (priv->time); g_signal_emit (player, signals[ADVANCE], 0, msecs, frames); } @@ -2413,7 +2482,7 @@ swfdec_player_is_initialized (SwfdecPlayer *player) { g_return_val_if_fail (SWFDEC_IS_PLAYER (player), FALSE); - return player->initialized; + return player->priv->initialized; } /** @@ -2463,7 +2532,7 @@ swfdec_player_get_rate (SwfdecPlayer *player) { g_return_val_if_fail (SWFDEC_IS_PLAYER (player), 0.0); - return player->rate / 256.0; + return player->priv->rate / 256.0; } /** @@ -2481,9 +2550,9 @@ swfdec_player_get_default_size (SwfdecPlayer *player, guint *width, guint *heigh g_return_if_fail (SWFDEC_IS_PLAYER (player)); if (width) - *width = player->width; + *width = player->priv->width; if (height) - *height = player->height; + *height = player->priv->height; } /** @@ -2501,30 +2570,31 @@ swfdec_player_get_size (SwfdecPlayer *player, int *width, int *height) g_return_if_fail (SWFDEC_IS_PLAYER (player)); if (width) - *width = player->stage_width; + *width = player->priv->stage_width; if (height) - *height = player->stage_height; + *height = player->priv->stage_height; } static void swfdec_player_update_size (gpointer playerp, gpointer unused) { SwfdecPlayer *player = playerp; + SwfdecPlayerPrivate *priv = player->priv; /* FIXME: only update if not fullscreen */ - player->internal_width = player->stage_width >=0 ? (guint) player->stage_width : player->width; - player->internal_height = player->stage_height >=0 ? (guint) player->stage_height : player->height; + priv->internal_width = priv->stage_width >=0 ? (guint) priv->stage_width : priv->width; + priv->internal_height = priv->stage_height >=0 ? (guint) priv->stage_height : priv->height; - if (player->scale_mode != SWFDEC_SCALE_NONE) + if (priv->scale_mode != SWFDEC_SCALE_NONE) return; /* only broadcast once */ - if (player->internal_width == player->broadcasted_width && - player->internal_height == player->broadcasted_height) + if (priv->internal_width == priv->broadcasted_width && + priv->internal_height == priv->broadcasted_height) return; - player->broadcasted_width = player->internal_width; - player->broadcasted_height = player->internal_height; + priv->broadcasted_width = priv->internal_width; + priv->broadcasted_height = priv->internal_height; swfdec_player_broadcast (player, SWFDEC_AS_STR_Stage, SWFDEC_AS_STR_onResize); } @@ -2540,19 +2610,21 @@ swfdec_player_update_size (gpointer playerp, gpointer unused) void swfdec_player_set_size (SwfdecPlayer *player, int width, int height) { + SwfdecPlayerPrivate *priv; gboolean changed = FALSE; g_return_if_fail (SWFDEC_IS_PLAYER (player)); g_return_if_fail (width >= -1); g_return_if_fail (height >= -1); - if (player->stage_width != width) { - player->stage_width = width; + priv = player->priv; + if (priv->stage_width != width) { + priv->stage_width = width; g_object_notify (G_OBJECT (player), "width"); changed = TRUE; } - if (player->stage_height != height) { - player->stage_height = height; + if (priv->stage_height != height) { + priv->stage_height = height; g_object_notify (G_OBJECT (player), "height"); changed = TRUE; } @@ -2575,7 +2647,7 @@ swfdec_player_get_audio (SwfdecPlayer * player) { g_return_val_if_fail (SWFDEC_IS_PLAYER (player), NULL); - return player->audio; + return player->priv->audio; } /** @@ -2592,7 +2664,7 @@ swfdec_player_get_background_color (SwfdecPlayer *player) { g_return_val_if_fail (SWFDEC_IS_PLAYER (player), SWFDEC_COLOR_COMBINE (0xFF, 0xFF, 0xFF, 0xFF)); - return player->bgcolor; + return player->priv->bgcolor; } /** @@ -2606,16 +2678,19 @@ swfdec_player_get_background_color (SwfdecPlayer *player) void swfdec_player_set_background_color (SwfdecPlayer *player, guint color) { + SwfdecPlayerPrivate *priv; + g_return_if_fail (SWFDEC_IS_PLAYER (player)); - player->bgcolor_set = TRUE; - if (player->bgcolor == color) + priv = player->priv; + priv->bgcolor_set = TRUE; + if (priv->bgcolor == color) return; - player->bgcolor = color; + priv->bgcolor = color; g_object_notify (G_OBJECT (player), "background-color"); if (swfdec_player_is_initialized (player)) { g_signal_emit (player, signals[INVALIDATE], 0, 0.0, 0.0, - (double) player->width, (double) player->height); + (double) priv->width, (double) priv->height); } } @@ -2633,7 +2708,7 @@ swfdec_player_get_scale_mode (SwfdecPlayer *player) { g_return_val_if_fail (SWFDEC_IS_PLAYER (player), SWFDEC_SCALE_SHOW_ALL); - return player->scale_mode; + return player->priv->scale_mode; } /** @@ -2647,10 +2722,13 @@ swfdec_player_get_scale_mode (SwfdecPlayer *player) void swfdec_player_set_scale_mode (SwfdecPlayer *player, SwfdecScaleMode mode) { + SwfdecPlayerPrivate *priv; + g_return_if_fail (SWFDEC_IS_PLAYER (player)); - if (player->scale_mode != mode) { - player->scale_mode = mode; + priv = player->priv; + if (priv->scale_mode != mode) { + priv->scale_mode = mode; swfdec_player_update_scale (player); g_object_notify (G_OBJECT (player), "scale-mode"); swfdec_player_add_external_action (player, player, swfdec_player_update_size, NULL); @@ -2672,7 +2750,7 @@ swfdec_player_get_alignment (SwfdecPlayer *player) { g_return_val_if_fail (SWFDEC_IS_PLAYER (player), SWFDEC_ALIGNMENT_CENTER); - return swfdec_player_alignment_from_flags (player->align_flags); + return swfdec_player_alignment_from_flags (player->priv->align_flags); } /** @@ -2697,10 +2775,13 @@ swfdec_player_set_alignment (SwfdecPlayer *player, SwfdecAlignment align) void swfdec_player_set_align_flags (SwfdecPlayer *player, guint flags) { + SwfdecPlayerPrivate *priv; + g_return_if_fail (SWFDEC_IS_PLAYER (player)); - if (flags != player->align_flags) { - player->align_flags = flags; + priv = player->priv; + if (flags != priv->align_flags) { + priv->align_flags = flags; swfdec_player_update_scale (player); g_object_notify (G_OBJECT (player), "alignment"); } @@ -2721,7 +2802,7 @@ swfdec_player_get_maximum_runtime (SwfdecPlayer *player) { g_return_val_if_fail (SWFDEC_IS_PLAYER (player), 0); - return player->max_runtime; + return player->priv->max_runtime; } /** @@ -2745,7 +2826,7 @@ swfdec_player_set_maximum_runtime (SwfdecPlayer *player, gulong msecs) { g_return_if_fail (SWFDEC_IS_PLAYER (player)); - player->max_runtime = msecs; + player->priv->max_runtime = msecs; g_object_notify (G_OBJECT (player), "max-runtime"); } diff --git a/libswfdec/swfdec_player.h b/libswfdec/swfdec_player.h index 903eabb..16ec52d 100644 --- a/libswfdec/swfdec_player.h +++ b/libswfdec/swfdec_player.h @@ -22,6 +22,7 @@ #include <glib-object.h> #include <cairo.h> +#include <libswfdec/swfdec_as_context.h> #include <libswfdec/swfdec_as_types.h> #include <libswfdec/swfdec_loader.h> @@ -54,6 +55,7 @@ typedef enum { } SwfdecScaleMode; typedef struct _SwfdecPlayer SwfdecPlayer; +typedef struct _SwfdecPlayerPrivate SwfdecPlayerPrivate; typedef struct _SwfdecPlayerClass SwfdecPlayerClass; #define SWFDEC_TYPE_PLAYER (swfdec_player_get_type()) @@ -63,6 +65,29 @@ typedef struct _SwfdecPlayerClass SwfdecPlayerClass; #define SWFDEC_PLAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWFDEC_TYPE_PLAYER, SwfdecPlayerClass)) #define SWFDEC_PLAYER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SWFDEC_TYPE_PLAYER, SwfdecPlayerClass)) +struct _SwfdecPlayer +{ + SwfdecAsContext context; + SwfdecPlayerPrivate * priv; +}; + +struct _SwfdecPlayerClass +{ + SwfdecAsContextClass context_class; + + void (* advance) (SwfdecPlayer * player, + gulong msecs, + guint audio_samples); + gboolean (* handle_key) (SwfdecPlayer * player, + guint key, + guint character, + gboolean down); + gboolean (* handle_mouse) (SwfdecPlayer * player, + double x, + double y, + int button); +}; + void swfdec_init (void); GType swfdec_player_get_type (void); diff --git a/libswfdec/swfdec_player_internal.h b/libswfdec/swfdec_player_internal.h index 8fff190..07d3fa8 100644 --- a/libswfdec/swfdec_player_internal.h +++ b/libswfdec/swfdec_player_internal.h @@ -21,7 +21,6 @@ #define _SWFDEC_PLAYER_INTERNAL_H_ #include <libswfdec/swfdec_player.h> -#include <libswfdec/swfdec_as_context.h> #include <libswfdec/swfdec_audio.h> #include <libswfdec/swfdec_event.h> #include <libswfdec/swfdec_rect.h> @@ -50,9 +49,9 @@ struct _SwfdecTimeout { #define SWFDEC_PLAYER_N_ACTION_QUEUES 4 -struct _SwfdecPlayer +struct _SwfdecPlayerPrivate { - SwfdecAsContext context; + SwfdecPlayer * player; /* backlink */ /* global properties */ SwfdecSystem * system; /* our system properties */ @@ -130,23 +129,6 @@ struct _SwfdecPlayer SwfdecRingBuffer * actions[SWFDEC_PLAYER_N_ACTION_QUEUES]; /* all actions we've queued up so far */ }; -struct _SwfdecPlayerClass -{ - SwfdecAsContextClass context_class; - - void (* advance) (SwfdecPlayer * player, - gulong msecs, - guint audio_samples); - gboolean (* handle_key) (SwfdecPlayer * player, - guint key, - guint character, - gboolean down); - gboolean (* handle_mouse) (SwfdecPlayer * player, - double x, - double y, - int button); -}; - void swfdec_player_initialize (SwfdecPlayer * player, guint version, guint rate, @@ -174,7 +156,7 @@ void swfdec_player_set_export_class (SwfdecPlayer * player, const char * name, SwfdecAsObject * object); -#define swfdec_player_is_mouse_pressed(player) ((player)->mouse_button & 1) +#define swfdec_player_is_mouse_pressed(player) ((player)->priv->mouse_button & 1) void swfdec_player_invalidate (SwfdecPlayer * player, const SwfdecRect * rect); void swfdec_player_add_timeout (SwfdecPlayer * player, diff --git a/libswfdec/swfdec_policy_loader.c b/libswfdec/swfdec_policy_loader.c index 983a034..6d04c75 100644 --- a/libswfdec/swfdec_policy_loader.c +++ b/libswfdec/swfdec_policy_loader.c @@ -226,7 +226,7 @@ swfdec_policy_loader_new (SwfdecFlashSecurity *sec, const char *host, url_str = g_strdup_printf ("http://%s/crossdomain.xml", host); url = swfdec_url_new (url_str); g_free (url_str); - policy_loader->loader = swfdec_loader_load (sec->player->resource->loader, + policy_loader->loader = swfdec_loader_load (sec->player->priv->resource->loader, url, SWFDEC_LOADER_REQUEST_DEFAULT, NULL, 0); swfdec_url_free (url); diff --git a/libswfdec/swfdec_resource.c b/libswfdec/swfdec_resource.c index 027027a..cac371a 100644 --- a/libswfdec/swfdec_resource.c +++ b/libswfdec/swfdec_resource.c @@ -57,7 +57,7 @@ swfdec_resource_is_root (SwfdecResource *resource) g_return_val_if_fail (SWFDEC_IS_RESOURCE (resource), FALSE); return - resource->movie == SWFDEC_FLASH_SECURITY (resource)->player->roots->data; + resource->movie == SWFDEC_FLASH_SECURITY (resource)->player->priv->roots->data; } static SwfdecPlayer * @@ -119,7 +119,7 @@ swfdec_resource_emit_signal (SwfdecResource *resource, const char *name, gboolea return; cx = SWFDEC_AS_OBJECT (resource->clip_loader)->context; g_assert (resource->target); - movie = swfdec_action_lookup_object (cx, SWFDEC_PLAYER (cx)->roots->data, + movie = swfdec_action_lookup_object (cx, SWFDEC_PLAYER (cx)->priv->roots->data, resource->target, resource->target + strlen (resource->target)); if (!SWFDEC_IS_SPRITE_MOVIE (movie)) { SWFDEC_DEBUG ("no movie, not emitting signal"); @@ -203,7 +203,7 @@ swfdec_resource_create_movie (SwfdecResource *resource) return TRUE; player = SWFDEC_FLASH_SECURITY (resource)->player; movie = (SwfdecSpriteMovie *) swfdec_action_lookup_object (SWFDEC_AS_CONTEXT (player), - player->roots->data, resource->target, resource->target + strlen (resource->target)); + player->priv->roots->data, resource->target, resource->target + strlen (resource->target)); if (!SWFDEC_IS_SPRITE_MOVIE (movie)) { level = swfdec_player_get_level (player, resource->target); if (level < 0) { @@ -498,7 +498,7 @@ swfdec_resource_do_unload (SwfdecPlayer *player, const char *target, gpointer re SwfdecSpriteMovie *movie; movie = (SwfdecSpriteMovie *) swfdec_action_lookup_object ( - SWFDEC_AS_CONTEXT (player), player->roots->data, + SWFDEC_AS_CONTEXT (player), player->priv->roots->data, target, target + strlen (target)); if (!SWFDEC_IS_SPRITE_MOVIE (movie)) { SWFDEC_DEBUG ("no movie, not unloading"); diff --git a/libswfdec/swfdec_resource_request.c b/libswfdec/swfdec_resource_request.c index 7b17d12..020625d 100644 --- a/libswfdec/swfdec_resource_request.c +++ b/libswfdec/swfdec_resource_request.c @@ -68,11 +68,11 @@ swfdec_player_request_resource_allow_callback (const SwfdecURL *url, loader = NULL; } else { if (data->buffer) { - loader = swfdec_loader_load (data->player->resource->loader, url, + loader = swfdec_loader_load (data->player->priv->resource->loader, url, data->request, (const char *) data->buffer->data, data->buffer->length); } else { - loader = swfdec_loader_load (data->player->resource->loader, url, + loader = swfdec_loader_load (data->player->priv->resource->loader, url, data->request, NULL, 0); } } @@ -102,7 +102,7 @@ swfdec_player_request_resource_now (SwfdecPlayer *player, data->user_data = user_data; /* create absolute url first */ - absolute = swfdec_url_new_relative (swfdec_loader_get_url (player->resource->loader), url); + absolute = swfdec_url_new_relative (swfdec_loader_get_url (player->priv->resource->loader), url); swfdec_security_allow_url (security, absolute, swfdec_player_request_resource_allow_callback, data); @@ -130,7 +130,7 @@ swfdec_request_resource_perform_load_callback (SwfdecPlayer *player, static void swfdec_request_resource_perform_load (SwfdecPlayer *player, SwfdecResourceRequest *request) { - g_assert (player->resource); + g_assert (player->priv->resource); swfdec_player_request_resource_now (player, request->security, request->url, request->request, request->buffer, swfdec_request_resource_perform_load_callback, request); @@ -172,8 +172,8 @@ swfdec_player_resource_request_perform (SwfdecPlayer *player) g_return_if_fail (SWFDEC_IS_PLAYER (player)); - list = player->resource_requests; - player->resource_requests = NULL; + list = player->priv->resource_requests; + player->priv->resource_requests = NULL; g_slist_foreach (list, swfdec_request_resource_perform_one, player); g_slist_free (list); } @@ -201,7 +201,7 @@ swfdec_player_request_resource (SwfdecPlayer *player, SwfdecSecurity *security, request->destroy = destroy; request->data = data; - player->resource_requests = g_slist_append (player->resource_requests, request); + player->priv->resource_requests = g_slist_append (player->priv->resource_requests, request); } static gboolean @@ -250,7 +250,7 @@ swfdec_player_request_fscommand (SwfdecPlayer *player, const char *command, request->command = g_ascii_strdown (command, -1); request->value = g_strdup (value); - player->resource_requests = g_slist_append (player->resource_requests, request); + player->priv->resource_requests = g_slist_append (player->priv->resource_requests, request); return TRUE; } @@ -270,7 +270,7 @@ swfdec_player_request_unload (SwfdecPlayer *player, const char *target, request->data = data; request->destroy = destroy; - player->resource_requests = g_slist_append (player->resource_requests, request); + player->priv->resource_requests = g_slist_append (player->priv->resource_requests, request); } void @@ -284,8 +284,8 @@ swfdec_player_resource_request_finish (SwfdecPlayer *player) { g_return_if_fail (SWFDEC_IS_PLAYER (player)); - g_slist_foreach (player->resource_requests, (GFunc) swfdec_resource_request_free, NULL); - g_slist_free (player->resource_requests); - player->resource_requests = NULL; + g_slist_foreach (player->priv->resource_requests, (GFunc) swfdec_resource_request_free, NULL); + g_slist_free (player->priv->resource_requests); + player->priv->resource_requests = NULL; } diff --git a/libswfdec/swfdec_sound_object.c b/libswfdec/swfdec_sound_object.c index 8beda57..1d95fdb 100644 --- a/libswfdec/swfdec_sound_object.c +++ b/libswfdec/swfdec_sound_object.c @@ -332,7 +332,7 @@ swfdec_sound_object_construct (SwfdecAsContext *cx, SwfdecAsObject *object, guin * We use the target in attachSound to look up the sound object to attach. * But I'm not sure what is used for global sounds. * So we just use a random one that looks good for now. */ - sound->target = player->roots->data; + sound->target = player->priv->roots->data; } else { sound->target = swfdec_player_get_movie_from_value (player, &argv[0]); } diff --git a/libswfdec/swfdec_sprite.c b/libswfdec/swfdec_sprite.c index d17cbd5..ae61642 100644 --- a/libswfdec/swfdec_sprite.c +++ b/libswfdec/swfdec_sprite.c @@ -126,20 +126,21 @@ int tag_func_set_background_color (SwfdecSwfDecoder * s, guint tag) { SwfdecPlayer *player = SWFDEC_DECODER (s)->player; + SwfdecPlayerPrivate *priv = player->priv; SwfdecColor color = swfdec_bits_get_color (&s->b); - if (player->bgcolor_set) { + if (priv->bgcolor_set) { /* only an INFO because it can be set by user, should be error if we check duplication of tag */ SWFDEC_INFO ("background color has been set to %X already, setting to %X ignored", - player->bgcolor, color); + priv->bgcolor, color); } else { SWFDEC_LOG ("setting background color to %X", color); /* can't use swfdec_player_set_background_color() here, because the player is locked and doesn't emit signals */ - player->bgcolor = color; - player->bgcolor_set = TRUE; - player->invalid_extents = player->stage; - g_array_set_size (player->invalidations, 1); - g_array_index (player->invalidations, SwfdecRectangle, 0) = player->stage; + priv->bgcolor = color; + priv->bgcolor_set = TRUE; + priv->invalid_extents = priv->stage; + g_array_set_size (priv->invalidations, 1); + g_array_index (priv->invalidations, SwfdecRectangle, 0) = priv->stage; g_object_notify (G_OBJECT (player), "background-color"); } diff --git a/libswfdec/swfdec_sprite_movie.c b/libswfdec/swfdec_sprite_movie.c index 1626ede..791f985 100644 --- a/libswfdec/swfdec_sprite_movie.c +++ b/libswfdec/swfdec_sprite_movie.c @@ -641,8 +641,8 @@ swfdec_sprite_movie_add (SwfdecAsObject *object) { SwfdecPlayer *player = SWFDEC_PLAYER (object->context); - if (player->MovieClip) - swfdec_as_object_set_constructor (object, player->MovieClip); + if (player->priv->MovieClip) + swfdec_as_object_set_constructor (object, player->priv->MovieClip); SWFDEC_AS_OBJECT_CLASS (swfdec_sprite_movie_parent_class)->add (object); } diff --git a/libswfdec/swfdec_sprite_movie_as.c b/libswfdec/swfdec_sprite_movie_as.c index b4b5774..e1c4f5d 100644 --- a/libswfdec/swfdec_sprite_movie_as.c +++ b/libswfdec/swfdec_sprite_movie_as.c @@ -825,19 +825,20 @@ swfdec_sprite_movie_setMask (SwfdecAsContext *cx, SwfdecAsObject *object, void swfdec_sprite_movie_init_context (SwfdecPlayer *player, guint version) { + SwfdecPlayerPrivate *priv = player->priv; SwfdecAsContext *context = SWFDEC_AS_CONTEXT (player); SwfdecAsValue val; SwfdecAsObject *proto; - player->MovieClip = SWFDEC_AS_OBJECT (swfdec_as_object_add_function (context->global, + priv->MovieClip = SWFDEC_AS_OBJECT (swfdec_as_object_add_function (context->global, SWFDEC_AS_STR_MovieClip, 0, NULL, 0)); - if (player->MovieClip == NULL) + if (priv->MovieClip == NULL) return; proto = swfdec_as_object_new (context); if (!proto) return; SWFDEC_AS_VALUE_SET_OBJECT (&val, proto); - swfdec_as_object_set_variable_and_flags (player->MovieClip, + swfdec_as_object_set_variable_and_flags (priv->MovieClip, SWFDEC_AS_STR_prototype, &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); }; diff --git a/libswfdec/swfdec_stage_as.c b/libswfdec/swfdec_stage_as.c index b9cbda4..cd69731 100644 --- a/libswfdec/swfdec_stage_as.c +++ b/libswfdec/swfdec_stage_as.c @@ -36,7 +36,7 @@ get_scaleMode (SwfdecAsContext *cx, SwfdecAsObject *object, { SwfdecPlayer *player = SWFDEC_PLAYER (cx); - switch (player->scale_mode) { + switch (player->priv->scale_mode) { case SWFDEC_SCALE_SHOW_ALL: SWFDEC_AS_VALUE_SET_STRING (ret, SWFDEC_AS_STR_showAll); break; @@ -85,16 +85,17 @@ get_align (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret) { SwfdecPlayer *player = SWFDEC_PLAYER (cx); + SwfdecPlayerPrivate *priv = player->priv; char s[5]; guint i = 0; - if (player->align_flags & SWFDEC_ALIGN_FLAG_LEFT) + if (priv->align_flags & SWFDEC_ALIGN_FLAG_LEFT) s[i++] = 'L'; - if (player->align_flags & SWFDEC_ALIGN_FLAG_TOP) + if (priv->align_flags & SWFDEC_ALIGN_FLAG_TOP) s[i++] = 'T'; - if (player->align_flags & SWFDEC_ALIGN_FLAG_RIGHT) + if (priv->align_flags & SWFDEC_ALIGN_FLAG_RIGHT) s[i++] = 'R'; - if (player->align_flags & SWFDEC_ALIGN_FLAG_BOTTOM) + if (priv->align_flags & SWFDEC_ALIGN_FLAG_BOTTOM) s[i++] = 'B'; s[i] = 0; SWFDEC_AS_VALUE_SET_STRING (ret, swfdec_as_context_get_string (cx, s)); @@ -122,8 +123,8 @@ set_align (SwfdecAsContext *cx, SwfdecAsObject *object, if (strchr (s, 'b') || strchr (s, 'B')) flags |= SWFDEC_ALIGN_FLAG_BOTTOM; - if (flags != player->align_flags) { - player->align_flags = flags; + if (flags != player->priv->align_flags) { + player->priv->align_flags = flags; g_object_notify (G_OBJECT (player), "alignment"); swfdec_player_update_scale (player); } @@ -136,7 +137,7 @@ get_width (SwfdecAsContext *cx, SwfdecAsObject *object, { SwfdecPlayer *player = SWFDEC_PLAYER (cx); - SWFDEC_AS_VALUE_SET_INT (ret, player->internal_width); + SWFDEC_AS_VALUE_SET_INT (ret, player->priv->internal_width); } SWFDEC_AS_NATIVE (666, 7, get_height) @@ -146,7 +147,7 @@ get_height (SwfdecAsContext *cx, SwfdecAsObject *object, { SwfdecPlayer *player = SWFDEC_PLAYER (cx); - SWFDEC_AS_VALUE_SET_INT (ret, player->internal_height); + SWFDEC_AS_VALUE_SET_INT (ret, player->priv->internal_height); } /* FIXME: do this smarter */ diff --git a/libswfdec/swfdec_swf_decoder.c b/libswfdec/swfdec_swf_decoder.c index f079c54..28223f0 100644 --- a/libswfdec/swfdec_swf_decoder.c +++ b/libswfdec/swfdec_swf_decoder.c @@ -460,7 +460,7 @@ swfdec_swf_decoder_create_character (SwfdecSwfDecoder * s, guint id, GType type) result->id = id; g_hash_table_insert (s->characters, GUINT_TO_POINTER (id), result); if (SWFDEC_IS_CACHED (result)) { - swfdec_cached_set_cache (SWFDEC_CACHED (result), SWFDEC_DECODER (s)->player->cache); + swfdec_cached_set_cache (SWFDEC_CACHED (result), SWFDEC_DECODER (s)->player->priv->cache); } return result; diff --git a/libswfdec/swfdec_system_as.c b/libswfdec/swfdec_system_as.c index 36946d5..0ba3f9e 100644 --- a/libswfdec/swfdec_system_as.c +++ b/libswfdec/swfdec_system_as.c @@ -157,66 +157,66 @@ swfdec_system_has_screen_playback (SwfdecPlayer *player, SwfdecAsValue *ret) static void swfdec_system_is_debugger (SwfdecPlayer *player, SwfdecAsValue *ret) { - SWFDEC_AS_VALUE_SET_BOOLEAN (ret, player->system->debugger); + SWFDEC_AS_VALUE_SET_BOOLEAN (ret, player->priv->system->debugger); } static void swfdec_system_version (SwfdecPlayer *player, SwfdecAsValue *ret) { SWFDEC_AS_VALUE_SET_STRING (ret, swfdec_as_context_get_string ( - SWFDEC_AS_CONTEXT (player), player->system->version)); + SWFDEC_AS_CONTEXT (player), player->priv->system->version)); } static void swfdec_system_manufacturer (SwfdecPlayer *player, SwfdecAsValue *ret) { SWFDEC_AS_VALUE_SET_STRING (ret, swfdec_as_context_get_string ( - SWFDEC_AS_CONTEXT (player), player->system->manufacturer)); + SWFDEC_AS_CONTEXT (player), player->priv->system->manufacturer)); } static void swfdec_system_screen_width (SwfdecPlayer *player, SwfdecAsValue *ret) { - SWFDEC_AS_VALUE_SET_INT (ret, player->system->screen_width); + SWFDEC_AS_VALUE_SET_INT (ret, player->priv->system->screen_width); } static void swfdec_system_screen_height (SwfdecPlayer *player, SwfdecAsValue *ret) { - SWFDEC_AS_VALUE_SET_INT (ret, player->system->screen_height); + SWFDEC_AS_VALUE_SET_INT (ret, player->priv->system->screen_height); } static void swfdec_system_screen_dpi (SwfdecPlayer *player, SwfdecAsValue *ret) { - SWFDEC_AS_VALUE_SET_INT (ret, player->system->dpi); + SWFDEC_AS_VALUE_SET_INT (ret, player->priv->system->dpi); } static void swfdec_system_screen_color (SwfdecPlayer *player, SwfdecAsValue *ret) { SWFDEC_AS_VALUE_SET_STRING (ret, swfdec_as_context_get_string ( - SWFDEC_AS_CONTEXT (player), player->system->color_mode)); + SWFDEC_AS_CONTEXT (player), player->priv->system->color_mode)); } static void swfdec_system_screen_par (SwfdecPlayer *player, SwfdecAsValue *ret) { - SWFDEC_AS_VALUE_SET_NUMBER (ret, player->system->par); + SWFDEC_AS_VALUE_SET_NUMBER (ret, player->priv->system->par); } static void swfdec_system_os (SwfdecPlayer *player, SwfdecAsValue *ret) { SWFDEC_AS_VALUE_SET_STRING (ret, swfdec_as_context_get_string ( - SWFDEC_AS_CONTEXT (player), player->system->os)); + SWFDEC_AS_CONTEXT (player), player->priv->system->os)); } static void swfdec_system_language (SwfdecPlayer *player, SwfdecAsValue *ret) { SWFDEC_AS_VALUE_SET_STRING (ret, swfdec_as_context_get_string ( - SWFDEC_AS_CONTEXT (player), player->system->language)); + SWFDEC_AS_CONTEXT (player), player->priv->system->language)); } static void @@ -229,7 +229,7 @@ static void swfdec_system_player_type (SwfdecPlayer *player, SwfdecAsValue *ret) { SWFDEC_AS_VALUE_SET_STRING (ret, swfdec_as_context_get_string ( - SWFDEC_AS_CONTEXT (player), player->system->player_type)); + SWFDEC_AS_CONTEXT (player), player->priv->system->player_type)); } static void @@ -319,7 +319,7 @@ swfdec_system_query (SwfdecAsContext *cx, SwfdecAsObject *object, g_string_append (server, "&AR="); g_string_append (server, buffer); } else if (queries[i].name == SWFDEC_AS_STR_manufacturer) { - char *s = swfdec_as_string_escape (cx, player->system->server_manufacturer); + char *s = swfdec_as_string_escape (cx, player->priv->system->server_manufacturer); g_string_append_printf (server, "&M=%s", s); g_free (s); } else { diff --git a/libswfdec/swfdec_system_security.c b/libswfdec/swfdec_system_security.c index 46e2caf..dd01317 100644 --- a/libswfdec/swfdec_system_security.c +++ b/libswfdec/swfdec_system_security.c @@ -80,7 +80,7 @@ swfdec_system_security_get_sandboxType (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret) { - switch (SWFDEC_FLASH_SECURITY (SWFDEC_PLAYER (cx)->resource)->sandbox) { + switch (SWFDEC_FLASH_SECURITY (SWFDEC_PLAYER (cx)->priv->resource)->sandbox) { case SWFDEC_SANDBOX_REMOTE: SWFDEC_AS_VALUE_SET_STRING (ret, SWFDEC_AS_STR_remote); break; diff --git a/libswfdec/swfdec_video_movie.c b/libswfdec/swfdec_video_movie.c index f13b961..046befb 100644 --- a/libswfdec/swfdec_video_movie.c +++ b/libswfdec/swfdec_video_movie.c @@ -131,7 +131,7 @@ swfdec_video_movie_init_movie (SwfdecMovie *movie) { SwfdecPlayer *player = SWFDEC_PLAYER (SWFDEC_AS_OBJECT (movie)->context); - swfdec_as_object_set_constructor (SWFDEC_AS_OBJECT (movie), player->Video); + swfdec_as_object_set_constructor (SWFDEC_AS_OBJECT (movie), player->priv->Video); } static void diff --git a/libswfdec/swfdec_video_movie_as.c b/libswfdec/swfdec_video_movie_as.c index 0ff1506..833c634 100644 --- a/libswfdec/swfdec_video_movie_as.c +++ b/libswfdec/swfdec_video_movie_as.c @@ -74,7 +74,7 @@ swfdec_video_movie_init_context (SwfdecPlayer *player, guint version) SWFDEC_AS_STR_Video, 0, NULL, 0)); if (video == NULL) return; - player->Video = video; + player->priv->Video = video; proto = swfdec_as_object_new_empty (context); if (proto == NULL) return; diff --git a/test/dump.c b/test/dump.c index 01a1776..48f037d 100644 --- a/test/dump.c +++ b/test/dump.c @@ -402,8 +402,8 @@ main (int argc, char *argv[]) } player = swfdec_player_new_from_file (argv[1]); - if (player->resource->loader->error) { - g_printerr ("Couldn't open file \"%s\": %s\n", argv[1], player->resource->loader->error); + if (player->priv->resource->loader->error) { + g_printerr ("Couldn't open file \"%s\": %s\n", argv[1], player->priv->resource->loader->error); g_object_unref (player); return 1; } @@ -415,7 +415,7 @@ main (int argc, char *argv[]) player = NULL; return 1; } - s = (SwfdecSwfDecoder *) SWFDEC_MOVIE (player->roots->data)->resource->decoder; + s = (SwfdecSwfDecoder *) SWFDEC_MOVIE (player->priv->roots->data)->resource->decoder; /* FIXME: can happen after a _root.loadMovie() call */ if (!SWFDEC_IS_SWF_DECODER (s)) { g_printerr ("Movie already unloaded from \"%s\"\n", argv[1]); diff --git a/test/swfdec-extract.c b/test/swfdec-extract.c index 8a36820..3edfd25 100644 --- a/test/swfdec-extract.c +++ b/test/swfdec-extract.c @@ -261,7 +261,7 @@ main (int argc, char *argv[]) player = swfdec_player_new_from_file (argv[1]); /* FIXME: HACK! */ swfdec_player_advance (player, 0); - if (!SWFDEC_IS_SPRITE_MOVIE (player->roots->data)) { + if (!SWFDEC_IS_SPRITE_MOVIE (player->priv->roots->data)) { g_printerr ("Error parsing file \"%s\"\n", argv[1]); g_object_unref (player); player = NULL; @@ -270,11 +270,11 @@ main (int argc, char *argv[]) id = strtol (argv[2], NULL, 0); if (id >= 0) { character = swfdec_swf_decoder_get_character ( - SWFDEC_SWF_DECODER (SWFDEC_MOVIE (player->roots->data)->resource->decoder), + SWFDEC_SWF_DECODER (SWFDEC_MOVIE (player->priv->roots->data)->resource->decoder), id); } else { character = SWFDEC_CHARACTER (SWFDEC_SWF_DECODER ( - SWFDEC_MOVIE (player->roots->data)->resource->decoder)->main_sprite); + SWFDEC_MOVIE (player->priv->roots->data)->resource->decoder)->main_sprite); } if (SWFDEC_IS_SPRITE (character)) { if (!export_sprite_sound (SWFDEC_SPRITE (character), argv[3]))
Apparently Analagous Threads
- 12 commits - configure.ac doc/Makefile.am doc/swfdec-sections.txt libswfdec/jpeg libswfdec/swfdec_as_array.c libswfdec/swfdec_as_object.c libswfdec/swfdec_as_strings.c libswfdec/swfdec_player.c libswfdec/swfdec_player.h libswfdec/swfdec_player_internal.h
- 8 commits - libswfdec/swfdec_movie.c libswfdec/swfdec_movie.h libswfdec/swfdec_player.c libswfdec/swfdec_player_internal.h libswfdec/swfdec_sprite_movie_as.c vivified/core
- 2 commits - libswfdec/swfdec_player.c libswfdec/swfdec_player_internal.h libswfdec/swfdec_stage_as.c
- 6 commits - libswfdec/swfdec_initialize.as libswfdec/swfdec_initialize.h libswfdec/swfdec_player.c libswfdec/swfdec_player_internal.h libswfdec/swfdec_stage_as.c test/trace
- libswfdec/swfdec_load_object.c libswfdec/swfdec_movie.c libswfdec/swfdec_player.c libswfdec/swfdec_player_internal.h libswfdec/swfdec_resource.c libswfdec/swfdec_resource.h