summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xine_fbfe_frontend.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/xine_fbfe_frontend.c b/xine_fbfe_frontend.c
index 958db40a..87c3dfae 100644
--- a/xine_fbfe_frontend.c
+++ b/xine_fbfe_frontend.c
@@ -4,7 +4,7 @@
* See the main source file 'xineliboutput.c' for copyright information and
* how to reach the author.
*
- * $Id: xine_fbfe_frontend.c,v 1.36 2008-11-14 00:46:10 phintuka Exp $
+ * $Id: xine_fbfe_frontend.c,v 1.37 2008-11-14 23:03:02 phintuka Exp $
*
*/
@@ -29,11 +29,19 @@
typedef struct fbfe_s {
+ /* function pointers / base class */
union {
frontend_t fe; /* generic frontend */
fe_t x; /* xine frontend */
};
+ /* stored original handlers */
+ int (*fe_xine_init)(frontend_t *this_gen, const char *audio_driver,
+ const char *audio_port,
+ const char *video_driver,
+ int pes_buffers,
+ const char *static_post_plugins);
+
/* display */
/*char *modeline;*/
int fd_tty;
@@ -254,13 +262,13 @@ static int fbfe_xine_init(frontend_t *this_gen, const char *audio_driver,
int pes_buffers,
const char *static_post_plugins)
{
- if (video_driver && !strcmp(video_driver, "DirectFB")) {
- fbfe_t *this = (fbfe_t*)this_gen;
+ fbfe_t *this = (fbfe_t*)this_gen;
+
+ if (video_driver && !strcmp(video_driver, "DirectFB"))
update_DFBARGS(this->x.video_port_name);
- }
- return fe_xine_init(this_gen, audio_driver, audio_port,
- video_driver, pes_buffers, static_post_plugins);
+ return this->fe_xine_init(this_gen, audio_driver, audio_port,
+ video_driver, pes_buffers, static_post_plugins);
}
static frontend_t *fbfe_get_frontend(void)
@@ -281,6 +289,7 @@ static frontend_t *fbfe_get_frontend(void)
this->x.update_display_size = fbfe_update_display_size;
/* override */
+ this->fe_xine_init = this->fe.xine_init;
this->fe.xine_init = fbfe_xine_init;
return (frontend_t*)this;