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
}
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
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 | TEXF_ALLOWUPDATES, 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;
}
- // 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)
+#if defined(WIN64)
"OffscreenGecko64.dll",
- #elif defined(WIN32)
+#elif 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" );
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 );
}