1
0
mirror of git://projects.qi-hardware.com/gmenu2x.git synced 2024-07-04 22:02:21 +03:00

When started, load all OPKs in a thread to boost startup time

This commit is contained in:
Paul Cercueil 2013-08-28 13:25:10 -04:00
parent 5d8fb6520f
commit 5c631d610e
2 changed files with 26 additions and 17 deletions

View File

@ -25,6 +25,7 @@
#include <algorithm>
#include <math.h>
#include <fstream>
#include <thread>
#include <unistd.h>
#ifdef HAVE_LIBOPK
@ -79,6 +80,26 @@ Menu::Menu(GMenu2X *gmenu2x, Touchscreen &ts)
readLinks();
#ifdef HAVE_LIBOPK
std::thread t(&Menu::openAllPackages, this);
t.detach();
#endif
orderLinks();
btnContextMenu->setPosition(gmenu2x->resX - 38, gmenu2x->bottomBarIconY);
btnContextMenu->setAction(std::bind(&GMenu2X::showContextMenu, gmenu2x));
}
Menu::~Menu() {
freeLinks();
for (vector<Monitor *>::iterator it = monitors.begin();
it < monitors.end(); it++)
delete *it;
}
#ifdef HAVE_LIBOPK
void Menu::openAllPackages(void)
{
struct dirent *dptr;
DIR *dirp = opendir(CARD_ROOT);
@ -98,20 +119,6 @@ Menu::Menu(GMenu2X *gmenu2x, Touchscreen &ts)
}
#endif
orderLinks();
btnContextMenu->setPosition(gmenu2x->resX - 38, gmenu2x->bottomBarIconY);
btnContextMenu->setAction(std::bind(&GMenu2X::showContextMenu, gmenu2x));
}
Menu::~Menu() {
freeLinks();
for (vector<Monitor *>::iterator it = monitors.begin();
it < monitors.end(); it++)
delete *it;
}
void Menu::readSections(std::string parentDir)
{
DIR *dirp;
@ -751,6 +758,7 @@ void Menu::readPackages(std::string parentDir)
}
openPackage(parentDir + '/' + dptr->d_name, false);
inject_user_event(); // Notify the InputManager for a repaint
}
closedir(dirp);

View File

@ -105,6 +105,7 @@ public:
#ifdef HAVE_LIBOPK
void openPackage(std::string path, bool order = true);
void openPackagesFromDir(std::string path);
void openAllPackages(void);
#ifdef ENABLE_INOTIFY
void removePackageLink(std::string path);
#endif