mirror of
https://github.com/projectM-visualizer/projectm.git
synced 2026-02-16 05:25:43 +00:00
- merged in geiss & sperl's idle preset
- preset chooser doesn't abort when preset dir is invalid - added smooth preset switch cancellation when preset chooser empty (untested) - changed preset construct to allow for custom preset name when using input streams as source git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@427 6778bc44-b910-0410-a7a0-be141de4315d
This commit is contained in:
@ -46,42 +46,35 @@ void PresetLoader::setScanDirectory(std::string dirname)
|
||||
|
||||
void PresetLoader::rescan()
|
||||
{
|
||||
std::cerr << "Rescanning..." << std::endl;
|
||||
// std::cerr << "Rescanning..." << std::endl;
|
||||
|
||||
// Clear the directory entry collection
|
||||
m_entries.clear();
|
||||
|
||||
std::cerr << "cleared!" << std::endl;
|
||||
|
||||
// If directory already opened, close it first
|
||||
if (m_dir)
|
||||
{
|
||||
std::cerr << "m_dir" << std::endl;
|
||||
closedir(m_dir);
|
||||
m_dir = 0;
|
||||
}
|
||||
|
||||
std::cerr << "opening " << m_dirname << std::endl;
|
||||
// Allocate a new a stream given the current directory name
|
||||
if ((m_dir = opendir(m_dirname.c_str())) == NULL)
|
||||
{
|
||||
handleDirectoryError();
|
||||
abort();
|
||||
return; // no files loaded. m_entries is empty
|
||||
}
|
||||
|
||||
struct dirent * dir_entry;
|
||||
std::set<std::string> alphaSortedFileSet;
|
||||
|
||||
while ((dir_entry = readdir(m_dir)) != NULL)
|
||||
{
|
||||
|
||||
|
||||
{
|
||||
|
||||
std::ostringstream out;
|
||||
// Convert char * to friendly string
|
||||
std::string filename(dir_entry->d_name);
|
||||
|
||||
|
||||
// Verify extension is projectm or milkdrop
|
||||
if ((filename.rfind(PROJECTM_FILE_EXTENSION) != (filename.length() - PROJECTM_FILE_EXTENSION.length()))
|
||||
&& (filename.rfind(MILKDROP_FILE_EXTENSION) != (filename.length() - MILKDROP_FILE_EXTENSION.length())))
|
||||
@ -118,8 +111,6 @@ std::auto_ptr<Preset> PresetLoader::loadPreset(unsigned int index, const PresetI
|
||||
return std::auto_ptr<Preset>(new Preset(m_entries[index], presetInputs, presetOutputs));
|
||||
}
|
||||
|
||||
|
||||
|
||||
void PresetLoader::handleDirectoryError()
|
||||
{
|
||||
switch (errno)
|
||||
@ -135,10 +126,10 @@ void PresetLoader::handleDirectoryError()
|
||||
break;
|
||||
case ENFILE:
|
||||
std::cerr << "[PresetLoader] Your system has reached its open file limit. Giving up..." << std::endl;
|
||||
abort();
|
||||
break;
|
||||
case EMFILE:
|
||||
std::cerr << "[PresetLoader] too many files in use by projectM! Bailing!" << std::endl;
|
||||
abort();
|
||||
break;
|
||||
case EACCES:
|
||||
std::cerr << "[PresetLoader] permissions issue reading the specified preset directory." << std::endl;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user