Exemple #1
0
bool CActiveAEDSPMode::IsKnown(void) const
{
  CActiveAEDSPDatabase *database = CServiceBroker::GetADSP().GetADSPDatabase();
  if (!database || !database->IsOpen())
  {
    CLog::Log(LOGERROR, "ActiveAE DSP - failed to open the database");
    return false;
  }

  return database->GetModeId(*this) > 0;
}
Exemple #2
0
bool CActiveAEDSPMode::Delete(void)
{
  CActiveAEDSPDatabase *database = CServiceBroker::GetADSP().GetADSPDatabase();
  if (!database || !database->IsOpen())
  {
    CLog::Log(LOGERROR, "ActiveAE DSP - failed to open the database");
    return false;
  }

  return database->DeleteMode(*this);
}
Exemple #3
0
int CActiveAEDSPMode::AddUpdate(bool force)
{
  if (!force)
  {
    // not changed
    CSingleLock lock(m_critSection);
    if (!m_bChanged && m_iModeId > 0)
      return m_iModeId;
  }

  CActiveAEDSPDatabase *database = CServiceBroker::GetADSP().GetADSPDatabase();
  if (!database || !database->IsOpen())
  {
    CLog::Log(LOGERROR, "ActiveAE DSP - failed to open the database");
    return -1;
  }

  database->AddUpdateMode(*this);
  m_iModeId = database->GetModeId(*this);

  return m_iModeId;
}
void CGUIDialogAudioDSPSettings::Save()
{
  if (!g_passwordManager.CheckSettingLevelLock(SettingLevelExpert) &&
      CProfilesManager::GetInstance().GetMasterProfile().getLockMode() != LOCK_MODE_EVERYONE)
    return;

  // prompt user if they are sure
  if (!CGUIDialogYesNo::ShowAndGetInput(CVariant{12376}, CVariant{12377}))
    return;

  // reset the settings
  CActiveAEDSPDatabase db;
  if (!db.Open())
    return;

  db.EraseActiveDSPSettings();
  db.Close();

  CMediaSettings::GetInstance().GetDefaultAudioSettings() = CMediaSettings::GetInstance().GetCurrentAudioSettings();
  CMediaSettings::GetInstance().GetDefaultAudioSettings().m_MasterStreamType = AE_DSP_ASTREAM_AUTO;
  CSettings::GetInstance().Save();
}
Exemple #5
0
bool CGUIDialogAudioDSPManager::UpdateDatabase(CGUIDialogBusy* pDlgBusy)
{
    CActiveAEDSPDatabase db;
    if (!db.Open())
    {
        CLog::Log(LOGERROR, "DSP Manager - %s - Could not open DSP database for update!", __FUNCTION__);
        return false;
    }

    // calculate available items
    int maxItems = 0;
    for (int i = 0; i < AE_DSP_MODE_TYPE_MAX; i++)
    {
        maxItems += m_activeItems[i]->Size() + m_availableItems[i]->Size();
    }

    int processedItems = 0;
    for (int i = 0; i < AE_DSP_MODE_TYPE_MAX; i++)
    {
        for (int iListPtr = 0; iListPtr < m_activeItems[i]->Size(); iListPtr++)
        {
            CFileItemPtr pItem = m_activeItems[i]->Get(iListPtr);
            if (pItem->GetProperty("Changed").asBoolean())
            {
                bool success = db.UpdateMode( i,
                                              pItem->GetProperty("ActiveMode").asBoolean(),
                                              (int)pItem->GetProperty("AddonId").asInteger(),
                                              (int)pItem->GetProperty("AddonModeNumber").asInteger(),
                                              (int)pItem->GetProperty("Number").asInteger());

                if (!success)
                {
                    CLog::Log(LOGERROR, "DSP Manager - Could not update DSP database for active mode %i - %s!",
                              (int)pItem->GetProperty("AddonModeNumber").asInteger(),
                              pItem->GetProperty("Name").asString().c_str());
                }
            }

            processedItems++;
            if (pDlgBusy)
            {
                pDlgBusy->SetProgress((float)(processedItems * 100 / maxItems));

                if (pDlgBusy->IsCanceled())
                {
                    return false;
                }
            }

            ProcessRenderLoop(false);
        }

        for (int iListPtr = 0; iListPtr < m_availableItems[i]->Size(); iListPtr++)
        {
            CFileItemPtr pItem = m_availableItems[i]->Get(iListPtr);
            if (pItem && pItem->GetProperty("Changed").asBoolean())
            {
                bool success = db.UpdateMode( i,
                                              pItem->GetProperty("ActiveMode").asBoolean(),
                                              (int)pItem->GetProperty("AddonId").asInteger(),
                                              (int)pItem->GetProperty("AddonModeNumber").asInteger(),
                                              (int)pItem->GetProperty("Number").asInteger());

                if (!success)
                {
                    CLog::Log(LOGERROR, "DSP Manager - Could not update DSP database for available mode %i - %s!",
                              (int)pItem->GetProperty("AddonModeNumber").asInteger(),
                              pItem->GetProperty("Name").asString().c_str());
                }
            }

            processedItems++;
            if (pDlgBusy)
            {
                pDlgBusy->SetProgress((float)(processedItems * 100 / maxItems));

                if (pDlgBusy->IsCanceled())
                {
                    return false;
                }
            }

            ProcessRenderLoop(false);
        }
    }
    db.Close();
    return true;
}
Exemple #6
0
void CGUIDialogAudioDSPManager::Update()
{
    CGUIDialogBusy* pDlgBusy = (CGUIDialogBusy*)g_windowManager.GetWindow(WINDOW_DIALOG_BUSY);
    if (!pDlgBusy)
    {
        helper_LogError(__FUNCTION__);
        return;
    }
    pDlgBusy->Open();

    Clear();

    AE_DSP_MODELIST modes;
    CActiveAEDSPDatabase db;
    if (!db.Open())
    {
        pDlgBusy->Close();
        CLog::Log(LOGERROR, "DSP Manager - %s - Could not open DSP database for update!", __FUNCTION__);
        return;
    }

    // construct a CFileItemList to pass 'em on to the list
    CFileItemList items;
    for (int i = 0; i < AE_DSP_MODE_TYPE_MAX; ++i)
    {
        int iModeType = dsp_mode_types[i].iModeType;

        modes.clear();
        db.GetModes(modes, iModeType);

        // No modes available, nothing to do.
        if (!modes.empty())
        {
            CFileItemPtr item(new CFileItem());
            item->SetLabel(g_localizeStrings.Get(dsp_mode_types[i].iName));
            item->SetLabel2(g_localizeStrings.Get(dsp_mode_types[i].iDescription));
            item->SetProperty("currentMode", dsp_mode_types[i].sModeType);
            items.Add(item);

            AE_DSP_MENUHOOK_CAT menuHook = helper_GetMenuHookCategory(iModeType);
            int continuesNo = 1;
            for (unsigned int iModePtr = 0; iModePtr < modes.size(); iModePtr++)
            {
                CFileItem *listItem = helper_CreateModeListItem(modes[iModePtr].first, menuHook, &continuesNo);
                if (listItem)
                {
                    CFileItemPtr pItem(listItem);

                    if (pItem->GetProperty("ActiveMode").asBoolean())
                    {
                        m_activeItems[iModeType]->Add(pItem);
                    }
                    else
                    {
                        m_availableItems[iModeType]->Add(pItem);
                    }
                }
                ProcessRenderLoop(false);
            }

            m_availableItems[iModeType]->Sort(SortByLabel, SortOrderAscending);
            if (iModeType == AE_DSP_MODE_TYPE_MASTER_PROCESS)
            {
                m_activeItems[iModeType]->Sort(SortByLabel, SortOrderAscending);
            }

        }
    }

    CGUIMessage msg(GUI_MSG_LABEL_BIND, GetID(), CONTROL_LIST_MODE_SELECTION, 0, 0, &items);
    OnMessage(msg);

    db.Close();

    pDlgBusy->Close();
}
void CGUIDialogAudioDSPManager::Update()
{
  CGUIDialogBusy* pDlgBusy = (CGUIDialogBusy*)g_windowManager.GetWindow(WINDOW_DIALOG_BUSY);
  if (!pDlgBusy)
  {
    helper_LogError(__FUNCTION__);
    return;
  }
  pDlgBusy->Open();

  Clear();

  AE_DSP_MODELIST modes;
  CActiveAEDSPDatabase db;
  if (!db.Open())
  {
    pDlgBusy->Close();
    CLog::Log(LOGERROR, "DSP Manager - %s - Could not open DSP database for update!", __FUNCTION__);
    return;
  }

  for (int iModeType = 0; iModeType < AE_DSP_MODE_TYPE_MAX; iModeType++)
  {
    modes.clear();
    db.GetModes(modes, iModeType);

    // No modes available, nothing to do.
    if (!modes.empty())
    {
      AE_DSP_MENUHOOK_CAT menuHook = helper_GetMenuHookCategory(iModeType);
      int continuesNo = 1;
      for (unsigned int iModePtr = 0; iModePtr < modes.size(); iModePtr++)
      {
        CFileItem *listItem = helper_CreateModeListItem(modes[iModePtr].first, menuHook, &continuesNo);
        if (listItem)
        {
          CFileItemPtr pItem(listItem);

          if (pItem->GetProperty("ActiveMode").asBoolean())
          {
            m_activeItems[iModeType]->Add(pItem);
          }
          else
          {
            m_availableItems[iModeType]->Add(pItem);
          }
        }
        g_windowManager.ProcessRenderLoop(false);
      }

      m_availableItems[iModeType]->Sort(SortByLabel, SortOrderAscending);
      if (iModeType == AE_DSP_MODE_TYPE_MASTER_PROCESS)
      {
        m_activeItems[iModeType]->Sort(SortByLabel, SortOrderAscending);
      }

    }
  }

  db.Close();

  pDlgBusy->Close();
}