Use correct resource path and check for errors on splash screen creation
This commit is contained in:
parent
f4df33efe4
commit
f094550279
3 changed files with 24 additions and 1 deletions
|
|
@ -41,6 +41,10 @@ void anbox::SystemConfiguration::set_data_path(const std::string &path) {
|
||||||
data_path = path;
|
data_path = path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void anbox::SystemConfiguration::set_resource_path(const std::string &path) {
|
||||||
|
resource_path = path;
|
||||||
|
}
|
||||||
|
|
||||||
fs::path anbox::SystemConfiguration::data_dir() const {
|
fs::path anbox::SystemConfiguration::data_dir() const {
|
||||||
return data_path;
|
return data_path;
|
||||||
}
|
}
|
||||||
|
|
@ -76,6 +80,10 @@ std::string anbox::SystemConfiguration::application_item_dir() const {
|
||||||
return dir.string();
|
return dir.string();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string anbox::SystemConfiguration::resource_dir() const {
|
||||||
|
return resource_path.string();
|
||||||
|
}
|
||||||
|
|
||||||
anbox::SystemConfiguration& anbox::SystemConfiguration::instance() {
|
anbox::SystemConfiguration& anbox::SystemConfiguration::instance() {
|
||||||
static SystemConfiguration config;
|
static SystemConfiguration config;
|
||||||
return config;
|
return config;
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ class SystemConfiguration {
|
||||||
virtual ~SystemConfiguration() = default;
|
virtual ~SystemConfiguration() = default;
|
||||||
|
|
||||||
void set_data_path(const std::string &path);
|
void set_data_path(const std::string &path);
|
||||||
|
void set_resource_path(const std::string &path);
|
||||||
|
|
||||||
boost::filesystem::path data_dir() const;
|
boost::filesystem::path data_dir() const;
|
||||||
std::string rootfs_dir() const;
|
std::string rootfs_dir() const;
|
||||||
|
|
@ -40,11 +41,13 @@ class SystemConfiguration {
|
||||||
std::string container_socket_path() const;
|
std::string container_socket_path() const;
|
||||||
std::string input_device_dir() const;
|
std::string input_device_dir() const;
|
||||||
std::string application_item_dir() const;
|
std::string application_item_dir() const;
|
||||||
|
std::string resource_dir() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
SystemConfiguration() = default;
|
SystemConfiguration() = default;
|
||||||
|
|
||||||
boost::filesystem::path data_path = "/var/lib/anbox";
|
boost::filesystem::path data_path = "/var/lib/anbox";
|
||||||
|
boost::filesystem::path resource_path = "/usr/share/anbox";
|
||||||
|
|
||||||
};
|
};
|
||||||
} // namespace anbox
|
} // namespace anbox
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "anbox/ui/splash_screen.h"
|
#include "anbox/ui/splash_screen.h"
|
||||||
|
#include "anbox/config.h"
|
||||||
#include "anbox/utils.h"
|
#include "anbox/utils.h"
|
||||||
|
|
||||||
#include <SDL2/SDL_image.h>
|
#include <SDL2/SDL_image.h>
|
||||||
|
|
@ -37,11 +38,22 @@ SplashScreen::SplashScreen() {
|
||||||
}
|
}
|
||||||
|
|
||||||
auto surface = SDL_GetWindowSurface(window_);
|
auto surface = SDL_GetWindowSurface(window_);
|
||||||
|
if (!surface)
|
||||||
|
BOOST_THROW_EXCEPTION(std::runtime_error("Could not retrieve surface for our window"));
|
||||||
|
|
||||||
SDL_FillRect(surface, nullptr, SDL_MapRGB(surface->format, 0xee, 0xee, 0xee));
|
SDL_FillRect(surface, nullptr, SDL_MapRGB(surface->format, 0xee, 0xee, 0xee));
|
||||||
SDL_UpdateWindowSurface(window_);
|
SDL_UpdateWindowSurface(window_);
|
||||||
|
|
||||||
auto renderer = SDL_CreateRenderer(window_, -1, SDL_RENDERER_ACCELERATED);
|
auto renderer = SDL_CreateRenderer(window_, -1, SDL_RENDERER_ACCELERATED);
|
||||||
auto img = IMG_LoadTexture(renderer, "/snap/anbox/current/snap/gui/icon.png");
|
if (!renderer)
|
||||||
|
BOOST_THROW_EXCEPTION(std::runtime_error("Could not create renderer"));
|
||||||
|
|
||||||
|
const auto icon_path = utils::string_format("%s/ui/icon.png", SystemConfiguration::instance().resource_dir());
|
||||||
|
auto img = IMG_LoadTexture(renderer, icon_path.c_str());
|
||||||
|
if (!img) {
|
||||||
|
const auto msg = utils::string_format("Failed to create texture from %s", icon_path);
|
||||||
|
BOOST_THROW_EXCEPTION(std::runtime_error(msg));
|
||||||
|
}
|
||||||
|
|
||||||
const auto tex_width = 128, tex_height = 128;
|
const auto tex_width = 128, tex_height = 128;
|
||||||
SDL_Rect r{(width - tex_width) / 2, (height - tex_height) / 2, 128, 128};
|
SDL_Rect r{(width - tex_width) / 2, (height - tex_height) / 2, 128, 128};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue