DWORD instantiateGL(const FFGLViewportStruct *pGLViewport) { NosuchDebug(1,"instantiateGL in FFGL.cpp called"); if (g_CurrPluginInfo==NULL || pGLViewport==NULL) return FF_FAIL; // If the plugin is not initialized, initialize it if (s_pPrototype == NULL) { DWORD dwRet = initialise(); if ((dwRet == FF_FAIL) || (s_pPrototype == NULL)) return FF_FAIL; } //get the instantiate function pointer FPCREATEINSTANCEGL *pInstantiate = g_CurrPluginInfo->GetFactoryMethod(); CFreeFrameGLPlugin *pInstance = NULL; //call the instantiate function DWORD dwRet = pInstantiate(&pInstance); //make sure the instantiate call worked if ((dwRet == FF_FAIL) || (pInstance == NULL)) return FF_FAIL; pInstance->m_pPlugin = pInstance; // Initializing instance with default values for (int i = 0; i < s_pPrototype->GetNumParams(); ++i) { //DWORD dwType = s_pPrototype->GetParamType(DWORD(i)); void* pValue = s_pPrototype->GetParamDefault(DWORD(i)); SetParameterStruct ParamStruct; ParamStruct.ParameterNumber = DWORD(i); memcpy(&ParamStruct.NewParameterValue, pValue, 4); dwRet = pInstance->SetParameter(&ParamStruct); if (dwRet == FF_FAIL) { //SetParameter failed, delete the instance delete pInstance; return FF_FAIL; } } //call the InitGL method if (pInstance->InitGL(pGLViewport)==FF_SUCCESS) { //succes? we're done. return (DWORD)pInstance; } //InitGL failed, delete the instance pInstance->DeInitGL(); delete pInstance; return FF_FAIL; }
DWORD deInstantiateGL(void *instanceID) { CFreeFrameGLPlugin *p = (CFreeFrameGLPlugin *)instanceID; if (p != NULL) { p->DeInitGL(); delete p; return FF_SUCCESS; } return FF_FAIL; }
DWORD deInstantiateGL(void *instanceID) { NosuchDebug("deInstantiateGL in FFGL.cpp called"); CFreeFrameGLPlugin *p = (CFreeFrameGLPlugin *)instanceID; if (p != NULL) { p->DeInitGL(); delete p; return FF_SUCCESS; } return FF_FAIL; }
plugMainUnion plugMain(DWORD functionCode, DWORD inputValue, DWORD instanceID) #endif { plugMainUnion retval; // declare pPlugObj - pointer to this instance CFreeFrameGLPlugin* pPlugObj; // typecast DWORD into pointer to a CFreeFrameGLPlugin pPlugObj = (CFreeFrameGLPlugin*) instanceID; switch (functionCode) { case FF_GETINFO: retval.PISvalue = (PluginInfoStruct*)getInfo(); break; case FF_INITIALISE: retval.ivalue = initialise(); break; case FF_DEINITIALISE: retval.ivalue = deInitialise(); break; case FF_GETNUMPARAMETERS: retval.ivalue = getNumParameters(); break; case FF_GETPARAMETERNAME: retval.svalue = getParameterName(inputValue); break; case FF_GETPARAMETERDEFAULT: retval.ivalue = getParameterDefault(inputValue); break; case FF_GETPLUGINCAPS: retval.ivalue = getPluginCaps(inputValue); break; case FF_GETEXTENDEDINFO: retval.ivalue = (DWORD) getExtendedInfo(); break; case FF_GETPARAMETERTYPE: retval.ivalue = getParameterType(inputValue); break; case FF_GETPARAMETERDISPLAY: if (pPlugObj != NULL) retval.svalue = pPlugObj->GetParameterDisplay(inputValue); else retval.svalue = (char*)FF_FAIL; break; case FF_SETPARAMETER: if (pPlugObj != NULL) retval.ivalue = pPlugObj->SetParameter((const SetParameterStruct*) inputValue); else retval.ivalue = FF_FAIL; break; case FF_GETPARAMETER: if (pPlugObj != NULL) retval.ivalue = pPlugObj->GetParameter(inputValue); else retval.ivalue = FF_FAIL; break; case FF_INSTANTIATEGL: retval.ivalue = (DWORD)instantiateGL((const FFGLViewportStruct *)inputValue); break; case FF_DEINSTANTIATEGL: if (pPlugObj != NULL) retval.ivalue = deInstantiateGL(pPlugObj); else retval.ivalue = FF_FAIL; break; case FF_GETIPUTSTATUS: if (pPlugObj != NULL) retval.ivalue = pPlugObj->GetInputStatus(inputValue); else retval.ivalue = FF_FAIL; break; case FF_PROCESSOPENGL: if (pPlugObj != NULL) { ProcessOpenGLStruct *pogls = (ProcessOpenGLStruct *)inputValue; if (pogls!=NULL) retval.ivalue = pPlugObj->ProcessOpenGL(pogls); else retval.ivalue = FF_FAIL; } else retval.ivalue = FF_FAIL; break; case FF_SETTIME: if (pPlugObj != NULL) { double *inputTime = (double *)inputValue; if (inputTime!=NULL) retval.ivalue = pPlugObj->SetTime(*inputTime); else retval.ivalue = FF_FAIL; } else retval.ivalue = FF_FAIL; break; //these old FF functions must always fail for FFGL plugins case FF_INSTANTIATE: case FF_DEINSTANTIATE: case FF_PROCESSFRAME: case FF_PROCESSFRAMECOPY: default: retval.ivalue = FF_FAIL; break; } return retval; }