Merge pull request #346 from LizardByte/fix/image-paths

fix image paths
This commit is contained in:
ReenigneArcher
2022-10-16 09:33:27 -04:00
committed by GitHub
3 changed files with 30 additions and 8 deletions
+28 -6
View File
@@ -192,8 +192,9 @@ std::vector<ctx_t> &proc_t::get_apps() {
} }
// Gets application image from application list. // Gets application image from application list.
// Returns image from assets directory if found there.
// Returns default image if image configuration is not set. // Returns default image if image configuration is not set.
// returns http content-type header compatible image type // Returns http content-type header compatible image type.
std::string proc_t::get_app_image(int app_id) { std::string proc_t::get_app_image(int app_id) {
auto app_index = app_id - 1; auto app_index = app_id - 1;
if(app_index < 0 || app_index >= _apps.size()) { if(app_index < 0 || app_index >= _apps.size()) {
@@ -201,20 +202,41 @@ std::string proc_t::get_app_image(int app_id) {
return SUNSHINE_ASSETS_DIR "/box.png"; return SUNSHINE_ASSETS_DIR "/box.png";
} }
auto default_image = SUNSHINE_ASSETS_DIR "/box.png";
auto app_image_path = _apps[app_index].image_path; auto app_image_path = _apps[app_index].image_path;
if(app_image_path.empty()) { if(app_image_path.empty()) {
return SUNSHINE_ASSETS_DIR "/box.png"; // image is empty, return default box image
return default_image;
} }
// get the image extension and convert it to lowercase
auto image_extension = std::filesystem::path(app_image_path).extension().string(); auto image_extension = std::filesystem::path(app_image_path).extension().string();
boost::to_lower(image_extension); boost::to_lower(image_extension);
std::error_code code; // return the default box image if extension is not "png"
if(!std::filesystem::exists(app_image_path, code) || image_extension != ".png") { if(image_extension != ".png") {
return SUNSHINE_ASSETS_DIR "/box.png"; return default_image;
} }
// return only "content-type" http header compatible image type. // check if image is in assets directory
auto full_image_path = std::filesystem::path(SUNSHINE_ASSETS_DIR) / app_image_path;
if(std::filesystem::exists(full_image_path)) {
return full_image_path.string();
}
else if(app_image_path == "./assets/steam.png") {
// handle old default steam image definition
return SUNSHINE_ASSETS_DIR "/steam.png";
}
// check if specified image exists
std::error_code code;
if(!std::filesystem::exists(app_image_path, code)) {
// return default box image if image does not exist
return default_image;
}
// image is a png, and not in assets directory
// return only "content-type" http header compatible image type
return app_image_path; return app_image_path;
} }
+1 -1
View File
@@ -14,7 +14,7 @@
"output":"steam.txt", "output":"steam.txt",
"detached":["setsid steam steam://open/bigpicture"], "detached":["setsid steam steam://open/bigpicture"],
"image-path":"./assets/steam.png" "image-path":"steam.png"
} }
] ]
} }
+1 -1
View File
@@ -8,7 +8,7 @@
"output":"steam.txt", "output":"steam.txt",
"detached":["steam steam://open/bigpicture"], "detached":["steam steam://open/bigpicture"],
"image-path":"./assets/steam.png" "image-path":"steam.png"
} }
] ]
} }