Non used svg2png cache folders are now deleted when exiting RT

see #3547
This commit is contained in:
Hombre 2019-01-02 22:39:49 +01:00
parent 4ee5c96392
commit 92ed81a1fe
5 changed files with 59 additions and 12 deletions

View File

@ -898,18 +898,8 @@ bool MyExpander::on_toggle(GdkEventButton* event)
if (!useEnabled) { if (!useEnabled) {
if (isVisible) { if (isVisible) {
statusImage->set(closedImage->get_surface()); statusImage->set(closedImage->get_surface());
if (closedImage->get_surface().operator bool()) {
Cairo::RefPtr<Cairo::ImageSurface> p = closedImage->get_surface();
int w = p->get_width();
int h = p->get_height();
}
} else { } else {
statusImage->set(openedImage->get_surface()); statusImage->set(openedImage->get_surface());
if (openedImage->get_surface().operator bool()) {
Cairo::RefPtr<Cairo::ImageSurface> p = openedImage->get_surface();
int w = p->get_width();
int h = p->get_height();
}
} }
} }

View File

@ -356,7 +356,6 @@ RTWindow *create_rt_window()
} }
} }
if (!css.empty()) { if (!css.empty()) {
printf("CSS: %s\nfontScale: %.5f\n\n", css.c_str(), fontScale);
try { try {
cssForced = Gtk::CssProvider::create(); cssForced = Gtk::CssProvider::create();
cssForced->load_from_data (css); cssForced->load_from_data (css);

View File

@ -74,6 +74,60 @@ void RTScalable::init(Gtk::Window *window)
direction = window->get_direction(); direction = window->get_direction();
} }
void RTScalable::deleteDir(const Glib::ustring& path)
{
int error = 0;
try {
Glib::Dir dir (path);
// Removing the directory content
for (auto entry = dir.begin(); entry != dir.end(); ++entry) {
error |= g_remove (Glib::build_filename (path, *entry).c_str());
}
if (error != 0 && options.rtSettings.verbose) {
std::cerr << "Failed to delete all entries in '" << path << "': " << g_strerror(errno) << std::endl;
}
} catch (Glib::Error&) {
error = 1;
}
// Removing the directory itself
if (!error) {
try {
error = g_remove (path.c_str());
} catch (Glib::Error&) {}
}
}
void RTScalable::cleanup()
{
Glib::ustring imagesCacheFolder = Glib::build_filename (options.cacheBaseDir, "svg2png");
Glib::ustring sDPI = Glib::ustring::compose("%1", (int)getTweakedDPI());
try {
Glib::Dir dir(imagesCacheFolder);
for (Glib::DirIterator entry = dir.begin(); entry != dir.end(); ++entry) {
const Glib::ustring fileName = *entry;
const Glib::ustring filePath = Glib::build_filename(imagesCacheFolder, fileName);
if (fileName == "." || fileName == ".." || !Glib::file_test(filePath, Glib::FILE_TEST_IS_DIR)) {
continue;
}
if (fileName != sDPI) {
deleteDir(filePath);
}
}
} catch (Glib::Exception&) {
}
}
/* /*
* This function try to find the svg file converted to png in a cache and return * This function try to find the svg file converted to png in a cache and return
* the Cairo::ImageSurface. If it can't find it, it will generate it. * the Cairo::ImageSurface. If it can't find it, it will generate it.

View File

@ -29,15 +29,17 @@ class RTScalable
static double dpi; static double dpi;
static int scale; static int scale;
static Gtk::TextDirection direction; // cached value for text-direction static Gtk::TextDirection direction; // cached value for text-direction
static void deleteDir(const Glib::ustring& path);
protected: protected:
static void setDPInScale (const double newDPI, const int newScale); static void setDPInScale (const double newDPI, const int newScale);
static Cairo::RefPtr<Cairo::ImageSurface> loadImage(const Glib::ustring &fname, double dpi); static Cairo::RefPtr<Cairo::ImageSurface> loadImage(const Glib::ustring &fname, double dpi);
Gtk::TextDirection getDirection(); static Gtk::TextDirection getDirection();
public: public:
static void init(Gtk::Window *window); static void init(Gtk::Window *window);
static void cleanup();
static double getDPI (); static double getDPI ();
static double getTweakedDPI (); // The returned value is tweaked DPI to adapt to main the font size. Maybe not an ideal solution. static double getTweakedDPI (); // The returned value is tweaked DPI to adapt to main the font size. Maybe not an ideal solution.
static int getScale (); static int getScale ();

View File

@ -321,6 +321,8 @@ RTWindow::~RTWindow()
if (fpanel) { if (fpanel) {
delete fpanel; delete fpanel;
} }
RTScalable::cleanup();
} }
void RTWindow::on_realize () void RTWindow::on_realize ()