static int (*osgk_addref) (OSGK_BaseObject* obj);
static int (*osgk_release) (OSGK_BaseObject* obj);
-static OSGK_INLINE int osgk_addref_real (OSGK_BaseObject* obj)
+/*static OSGK_INLINE int osgk_addref_real (OSGK_BaseObject* obj)
{
return osgk_addref (obj);
-}
+}*/
static OSGK_INLINE int osgk_release_real (OSGK_BaseObject* obj)
{
unsigned int apiVer, OSGK_EmbeddingOptions* options,
OSGK_GeckoResult* geckoResult);
-static OSGK_INLINE OSGK_Embedding* osgk_embedding_create (
+/*static OSGK_INLINE OSGK_Embedding* osgk_embedding_create (
OSGK_GeckoResult* geckoResult)
{
return osgk_embedding_create2 (OSGK_API_VERSION, 0, geckoResult);
-}
+}*/
static OSGK_INLINE OSGK_Embedding* osgk_embedding_create_with_options (
OSGK_EmbeddingOptions* options, OSGK_GeckoResult* geckoResult)
typedef enum OSGK_ScriptResult
{
srSuccess = 0,
- srFailed = 0x80004005L /* actually NS_ERROR_FAILURE */
+ srFailed = (int)0x80004005L /* actually NS_ERROR_FAILURE */
} OSGK_ScriptResult;
typedef struct OSGK_ScriptObjectCreateParams_s
return instance;
}
}
- if( developer.integer > 0 ) {
- Con_Printf( "cl_gecko_findunusedinstance: out of geckos\n" );
- }
+ Con_DPrintf( "cl_gecko_findunusedinstance: out of geckos\n" );
return NULL;
}
int i;
if( !name || !*name || strncmp( name, CLGECKOPREFIX, sizeof( CLGECKOPREFIX ) - 1 ) != 0 ) {
- if( developer.integer > 0 ) {
- Con_Printf( "CL_Gecko_FindBrowser: Bad gecko texture name '%s'!\n", name );
- }
+ Con_DPrintf( "CL_Gecko_FindBrowser: Bad gecko texture name '%s'!\n", name );
return NULL;
}
}
}
- if( developer.integer > 0 ) {
- Con_Printf( "CL_Gecko_FindBrowser: No browser named '%s'!\n", name );
- }
+ Con_DPrintf( "CL_Gecko_FindBrowser: No browser named '%s'!\n", name );
return NULL;
}
static void cl_gecko_updatecallback( rtexture_t *texture, void* callbackData ) {
- clgecko_t *instance = callbackData;
+ clgecko_t *instance = (clgecko_t *) callbackData;
const unsigned char *data;
if( instance->browser ) {
// TODO: OSGK only supports BGRA right now
TIMING_TIMESTATEMENT(data = osgk_browser_lock_data( instance->browser, NULL ));
- R_UpdateTexture( texture, data, 0, 0, instance->width, instance->height );
+ R_UpdateTexture( texture, data, 0, 0, 0, instance->width, instance->height, 1 );
osgk_browser_unlock_data( instance->browser, data );
}
}
static void cl_gecko_linktexture( clgecko_t *instance ) {
// TODO: assert that instance->texture == NULL
instance->texture = R_LoadTexture2D( cl_geckotexturepool, instance->name,
- instance->texWidth, instance->texHeight, NULL, TEXTYPE_BGRA, TEXF_ALPHA | TEXF_PERSISTENT, NULL );
+ instance->texWidth, instance->texHeight, NULL, TEXTYPE_BGRA, TEXF_ALPHA | TEXF_PERSISTENT, -1, NULL );
R_MakeTextureDynamic( instance->texture, cl_gecko_updatecallback, instance );
CL_LinkDynTexture( instance->name, instance->texture );
}
OSGK_ScriptVariant** params,
OSGK_ScriptVariant** returnVal)
{
- clgecko_t *instance = objTag;
+ clgecko_t *instance = (clgecko_t *) objTag;
OSGK_ScriptVariant* strVal;
OSGK_ScriptResult result = srFailed;
prvm_prog_t * saveProg;
return result;
}
-#if defined(WIN64)
+#if defined(_WIN64)
# define XULRUNNER_DIR_SUFFIX "win64"
#elif defined(WIN32)
# define XULRUNNER_DIR_SUFFIX "win32"
if( cl_geckoembedding != NULL ) return true;
- if( developer.integer > 0 ) {
- Con_Printf( "CL_Gecko_Embedding_Init: setting up gecko embedding\n" );
- }
+ Con_DPrintf( "CL_Gecko_Embedding_Init: setting up gecko embedding\n" );
options = osgk_embedding_options_create();
#ifdef XULRUNNER_DIR_SUFFIX
return false;
}
- if( developer.integer > 0 ) {
- Con_Printf( "CL_Gecko_Embedding_Init: Embedding set up correctly\n" );
- }
+ Con_DPrintf( "CL_Gecko_Embedding_Init: Embedding set up correctly\n" );
dpGlobalTemplate = osgk_sot_create( cl_geckoembedding, dpGlobal_create, NULL, NULL );
return;
}
- // TODO: use snprintf instead
- sprintf(name, CLGECKOPREFIX "%s", Cmd_Argv(1));
+ dpsnprintf(name, sizeof(name), CLGECKOPREFIX "%s", Cmd_Argv(1));
CL_Gecko_CreateBrowser( name, -1 );
}
return;
}
- // TODO: use snprintf instead
- sprintf(name, CLGECKOPREFIX "%s", Cmd_Argv(1));
+ dpsnprintf(name, sizeof(name), CLGECKOPREFIX "%s", Cmd_Argv(1));
CL_Gecko_DestroyBrowser( CL_Gecko_FindBrowser( name ) );
}
return;
}
- // TODO: use snprintf instead
- sprintf(name, CLGECKOPREFIX "%s", Cmd_Argv(1));
+ dpsnprintf(name, sizeof(name), CLGECKOPREFIX "%s", Cmd_Argv(1));
URI = Cmd_Argv( 2 );
CL_Gecko_NavigateToURI( CL_Gecko_FindBrowser( name ), URI );
}
return;
}
- // TODO: use snprintf instead
- sprintf(name, CLGECKOPREFIX "%s", Cmd_Argv(1));
+ dpsnprintf(name, sizeof(name), CLGECKOPREFIX "%s", Cmd_Argv(1));
instance = CL_Gecko_FindBrowser( name );
if( !instance ) {
Con_Printf( "cl_gecko_injecttext_f: gecko instance '%s' couldn't be found!\n", name );
break;
}
- CL_Gecko_Event_Key( instance, key, CLG_BET_PRESS );
+ CL_Gecko_Event_Key( instance, (keynum_t) key, CLG_BET_PRESS );
}
}
return;
}
- // TODO: use snprintf instead
- sprintf(name, CLGECKOPREFIX "%s", Cmd_Argv(1));
+ dpsnprintf(name, sizeof(name), CLGECKOPREFIX "%s", Cmd_Argv(1));
x = atof( Cmd_Argv( 2 ) );
y = atof( Cmd_Argv( 3 ) );
{NULL, NULL}
};
-void CL_Gecko_Init( void )
+qboolean CL_Gecko_OpenLibrary (void)
{
- const char* dllnames [] =
+ const char* dllnames_gecko [] =
{
- #if defined(WIN64)
- "OffscreenGecko64.dll",
- #elif defined(WIN32)
+#if defined(WIN32)
"OffscreenGecko.dll",
- #elif defined(MACOSX)
+#elif defined(MACOSX)
"OffscreenGecko.dylib",
- #else
+#else
"libOffscreenGecko.so",
- #endif
+#endif
NULL
};
-
- if (!osgk_dll)
- {
- if (! Sys_LoadLibrary (dllnames, &osgk_dll, osgkFuncs))
- {
- Con_Printf ("Could not load OffscreenGecko, Gecko support unavailable\n");
- }
- }
+
+ // Already loaded?
+ if (osgk_dll)
+ return true;
+
+// COMMANDLINEOPTION: Sound: -nogecko disables gecko support (web browser support for menu and computer terminals)
+ if (COM_CheckParm("-nogecko"))
+ return false;
+
+ return Sys_LoadLibrary (dllnames_gecko, &osgk_dll, osgkFuncs);
+}
+
+void CL_Gecko_Init( void )
+{
+ CL_Gecko_OpenLibrary();
Cmd_AddCommand( "gecko_create", cl_gecko_create_f, "Create a gecko browser instance" );
Cmd_AddCommand( "gecko_destroy", cl_gecko_destroy_f, "Destroy a gecko browser instance" );
Cmd_AddCommand( "gecko_injecttext", cl_gecko_injecttext_f, "Injects text into a browser" );
Cmd_AddCommand( "gecko_movecursor", gl_gecko_movecursor_f, "Move the cursor to a certain position" );
- R_RegisterModule( "CL_Gecko", cl_gecko_start, cl_gecko_shutdown, cl_gecko_newmap );
+ R_RegisterModule( "CL_Gecko", cl_gecko_start, cl_gecko_shutdown, cl_gecko_newmap, NULL, NULL );
}
void CL_Gecko_NavigateToURI( clgecko_t *instance, const char *URI ) {
return;
}
- mappedx = x * instance->width;
- mappedy = y * instance->height;
+ mappedx = (int) (x * instance->width);
+ mappedy = (int) (y * instance->height);
osgk_browser_event_mouse_move( instance->browser, mappedx, mappedy );
}