コード例 #1
0
ファイル: npshell.cpp プロジェクト: MozillaOnline/gecko-dev
//---------------------------------------------------------------------------
// NPP_SetWindow:
//---------------------------------------------------------------------------
NPError NP_LOADDS NPP_SetWindow(NPP pInstance, NPWindow * pNPWindow)
{
  if(pInstance == NULL)
  {
    dbgOut1("NPP_SetWindow returns NPERR_INVALID_INSTANCE_ERROR");
    return NPERR_INVALID_INSTANCE_ERROR;
  }

  if(pNPWindow == NULL)
  {
    dbgOut1("NPP_SetWindow returns NPERR_GENERIC_ERROR");
    return NPERR_GENERIC_ERROR;
  }

  HWND hWnd = (HWND)(DWORD)pNPWindow->window;

  CPlugin * pPlugin = (CPlugin *)pInstance->pdata;
  assert(pPlugin != NULL);

  if(pPlugin == NULL) 
  {
    dbgOut1("NPP_SetWindow returns NPERR_GENERIC_ERROR");
    return NPERR_GENERIC_ERROR;
  }

  if((hWnd == NULL) && (pPlugin->getWindow() == NULL)) // spurious entry
  {
    dbgOut1("NPP_SetWindow just returns with NPERR_NO_ERROR");
    return NPERR_NO_ERROR;
  }

  if((hWnd == NULL) && (pPlugin->getWindow() != NULL))
  { // window went away
    dbgOut1("NPP_SetWindow, going away...");
    pPlugin->shut();
    return NPERR_NO_ERROR;
  }

  if((pPlugin->getWindow() == NULL) && (hWnd != NULL))
  { // First time in -- no window created by plugin yet
    dbgOut1("NPP_SetWindow, first time");

    if(!pPlugin->init(hWnd))
    {
      delete pPlugin;
      pPlugin = NULL;
      return NPERR_MODULE_LOAD_FAILED_ERROR;
    }
  }

  if((pPlugin->getWindow() != NULL) && (hWnd != NULL))
  { // Netscape window has been resized
    dbgOut1("NPP_SetWindow, resizing");
    pPlugin->resize();
  }

  return NPERR_NO_ERROR;
}
コード例 #2
0
// here is the place to clean up and destroy the CPlugin object
NPError NPP_Destroy (NPP instance, NPSavedData** save)
{
  if(instance == NULL)
    return NPERR_INVALID_INSTANCE_ERROR;

  NPError rv = NPERR_NO_ERROR;

  CPlugin * pPlugin = (CPlugin *)instance->pdata;
  if(pPlugin != NULL) {
    pPlugin->shut();
    delete pPlugin;
  }
  return rv;
}
コード例 #3
0
ファイル: npshell.cpp プロジェクト: MozillaOnline/gecko-dev
//---------------------------------------------------------------------------
// NPP_Destroy:
//---------------------------------------------------------------------------
NPError NP_LOADDS
NPP_Destroy(NPP pInstance, NPSavedData** save)
{
  dbgOut1("NPP_Destroy");
  if(pInstance == NULL)
    return NPERR_INVALID_INSTANCE_ERROR;

  CPlugin * pPlugin = (CPlugin *)pInstance->pdata;
  if(pPlugin != NULL)
  {
    pPlugin->shut();
    delete pPlugin;
  }

  return NPERR_NO_ERROR;
}