#include "quakedef.h"\r
#include "cl_dyntexture.h"\r
#include "cl_gecko.h"\r
+#include "timing.h"\r
\r
static rtexturepool_t *cl_geckotexturepool;\r
static OSGK_Embedding *cl_geckoembedding;\r
\r
static void cl_gecko_updatecallback( rtexture_t *texture, clgecko_t *instance ) {\r
const unsigned char *data;\r
- if( instance->browser ) {\r
+ if( instance->browser && osgk_browser_query_dirty (instance->browser) ) {\r
// TODO: OSGK only supports BGRA right now\r
- data = osgk_browser_lock_data( instance->browser, NULL );\r
+ TIMING_TIMESTATEMENT(data = osgk_browser_lock_data( instance->browser, NULL ));\r
R_UpdateTexture( texture, data, 0, 0, DEFAULT_GECKO_WIDTH, DEFAULT_GECKO_HEIGHT );\r
osgk_browser_unlock_data( instance->browser, data );\r
}\r
clgecko_t *instance = cl_gecko_findunusedinstance();\r
// TODO: assert != NULL\r
\r
+ if( cl_geckoembedding == NULL ) {\r
+ OSGK_EmbeddingOptions *options = osgk_embedding_options_create();\r
+ osgk_embedding_options_add_search_path( options, "./xulrunner/" );\r
+ cl_geckoembedding = osgk_embedding_create_with_options( options, NULL );\r
+ osgk_release( options );\r
+ \r
+ if( cl_geckoembedding == NULL ) {\r
+ Con_Printf( "CL_Gecko_Init: Couldn't retrieve gecko embedding object!\n" );\r
+ return NULL;\r
+ }\r
+ }\r
+\r
instance->active = true;\r
strlcpy( instance->name, name, sizeof( instance->name ) );\r
instance->browser = osgk_browser_create( cl_geckoembedding, DEFAULT_GECKO_WIDTH, DEFAULT_GECKO_HEIGHT );\r
cl_gecko_unlinktexture( instance );\r
} \r
}\r
- osgk_release( cl_geckoembedding );\r
+\r
+ if (cl_geckoembedding != NULL)\r
+ {\r
+ osgk_release( cl_geckoembedding );\r
+ cl_geckoembedding = NULL;\r
+ }\r
}\r
\r
static void cl_gecko_create_f( void ) {\r
\r
void CL_Gecko_Init( void )\r
{\r
- OSGK_EmbeddingOptions *options = osgk_embedding_options_create();\r
- osgk_embedding_options_add_search_path( options, "./xulrunner/" );\r
- cl_geckoembedding = osgk_embedding_create_with_options( options, NULL );\r
- osgk_release( options );\r
- \r
- if( cl_geckoembedding == NULL ) {\r
- Con_Printf( "CL_Gecko_Init: Couldn't retrieve gecko embedding object!\n" );\r
- }\r
- \r
Cmd_AddCommand( "gecko_create", cl_gecko_create_f, "Create a gecko browser instance" );\r
Cmd_AddCommand( "gecko_destroy", cl_gecko_destroy_f, "Destroy a gecko browser instance" );\r
Cmd_AddCommand( "gecko_navigate", cl_gecko_navigate_f, "Navigate a gecko browser to a URI" );\r