/* * CL_ShutdownCinematics */ void CL_ShutdownCinematics( void ) { Cmd_RemoveCommand( "cinematic" ); Cmd_RemoveCommand( "cinepause" ); CIN_UnloadLibrary( qtrue ); }
/* * CIN_LoadLibrary */ void CIN_LoadLibrary( bool verbose ) { static cin_import_t import; dllfunc_t funcs[2]; void *( *GetCinematicsAPI )(void *); assert( !cin_libhandle ); import.Print = &CL_CinModule_Print; import.Error = &CL_CinModule_Error; import.Cvar_Get = &Cvar_Get; import.Cvar_Set = &Cvar_Set; import.Cvar_SetValue = &Cvar_SetValue; import.Cvar_ForceSet = &Cvar_ForceSet; import.Cvar_String = &Cvar_String; import.Cvar_Value = &Cvar_Value; import.Cmd_Argc = &Cmd_Argc; import.Cmd_Argv = &Cmd_Argv; import.Cmd_Args = &Cmd_Args; import.Cmd_AddCommand = &Cmd_AddCommand; import.Cmd_RemoveCommand = &Cmd_RemoveCommand; import.Cmd_ExecuteText = &Cbuf_ExecuteText; import.Cmd_Execute = &Cbuf_Execute; import.Cmd_SetCompletionFunc = &Cmd_SetCompletionFunc; import.FS_FOpenFile = &FS_FOpenFile; import.FS_Read = &FS_Read; import.FS_Write = &FS_Write; import.FS_Print = &FS_Print; import.FS_Tell = &FS_Tell; import.FS_Seek = &FS_Seek; import.FS_Eof = &FS_Eof; import.FS_Flush = &FS_Flush; import.FS_FCloseFile = &FS_FCloseFile; import.FS_RemoveFile = &FS_RemoveFile; import.FS_GetFileList = &FS_GetFileList; import.FS_IsUrl = &FS_IsUrl; import.Milliseconds = &Sys_Milliseconds; import.Microseconds = &Sys_Microseconds; import.Mem_AllocPool = &CL_CinModule_MemAllocPool; import.Mem_Alloc = &CL_CinModule_MemAlloc; import.Mem_Free = &CL_CinModule_MemFree; import.Mem_FreePool = &CL_CinModule_MemFreePool; import.Mem_EmptyPool = &CL_CinModule_MemEmptyPool; // load dynamic library cin_export = NULL; if( verbose ) { Com_Printf( "Loading CIN module... " ); } funcs[0].name = "GetCinematicsAPI"; funcs[0].funcPointer = ( void ** ) &GetCinematicsAPI; funcs[1].name = NULL; cin_libhandle = Com_LoadLibrary( LIB_DIRECTORY "/" LIB_PREFIX "cin_" ARCH LIB_SUFFIX, funcs ); if( cin_libhandle ) { // load succeeded int api_version; cin_export = GetCinematicsAPI( &import ); cin_mempool = Mem_AllocPool( NULL, "CIN Module" ); api_version = cin_export->API(); if( api_version == CIN_API_VERSION ) { if( cin_export->Init( verbose ) ) { if( verbose ) { Com_Printf( "Success.\n" ); } } else { // initialization failed Mem_FreePool( &cin_mempool ); if( verbose ) { Com_Printf( "Initialization failed.\n" ); } CIN_UnloadLibrary( verbose ); } } else { // wrong version Mem_FreePool( &cin_mempool ); Com_Printf( "CIN_LoadLibrary: wrong version: %i, not %i.\n", api_version, CIN_API_VERSION ); CIN_UnloadLibrary( verbose ); } } else { if( verbose ) { Com_Printf( "Not found.\n" ); } } Mem_DebugCheckSentinelsGlobal(); }