mirror of
https://repo.dec05eba.com/gpu-screen-recorder-ui
synced 2026-03-31 09:17:04 +09:00
Always use transparent background, only take screenshot if no compositor
This commit is contained in:
17
src/main.cpp
17
src/main.cpp
@@ -223,7 +223,7 @@ int main(int argc, char **argv) {
|
|||||||
window_create_params.hidden = true;
|
window_create_params.hidden = true;
|
||||||
//window_create_params.override_redirect = true;
|
//window_create_params.override_redirect = true;
|
||||||
window_create_params.background_color = bg_color;
|
window_create_params.background_color = bg_color;
|
||||||
window_create_params.support_alpha = is_compositor_running(display, 0);
|
window_create_params.support_alpha = true;
|
||||||
window_create_params.window_type = MGL_WINDOW_TYPE_DIALOG;
|
window_create_params.window_type = MGL_WINDOW_TYPE_DIALOG;
|
||||||
|
|
||||||
mgl::Window window;
|
mgl::Window window;
|
||||||
@@ -268,20 +268,19 @@ int main(int argc, char **argv) {
|
|||||||
if(!stream_button_texture.load_from_file((program_root_dir + "images/stream.png").c_str()))
|
if(!stream_button_texture.load_from_file((program_root_dir + "images/stream.png").c_str()))
|
||||||
startup_error("failed to load texture: images/stream.png");
|
startup_error("failed to load texture: images/stream.png");
|
||||||
|
|
||||||
// TODO: Only do these things if no compositor (with argb support) is running.
|
|
||||||
// TODO: Get size from monitor, get region specific to the monitor
|
// TODO: Get size from monitor, get region specific to the monitor
|
||||||
XImage *img = XGetImage(display, DefaultRootWindow(display), window_pos.x, window_pos.y, window_size.x, window_size.y, AllPlanes, ZPixmap);
|
|
||||||
if(!img) {
|
|
||||||
fprintf(stderr, "Error: failed to take a screenshot\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
mgl::Texture screenshot_texture;
|
mgl::Texture screenshot_texture;
|
||||||
if(!window_create_params.support_alpha) {
|
if(!is_compositor_running(display, 0)) {
|
||||||
|
XImage *img = XGetImage(display, DefaultRootWindow(display), window_pos.x, window_pos.y, window_size.x, window_size.y, AllPlanes, ZPixmap);
|
||||||
|
if(!img)
|
||||||
|
fprintf(stderr, "Error: failed to take a screenshot\n");
|
||||||
|
|
||||||
|
if(img) {
|
||||||
screenshot_texture = texture_from_ximage(img);
|
screenshot_texture = texture_from_ximage(img);
|
||||||
XDestroyImage(img);
|
XDestroyImage(img);
|
||||||
img = NULL;
|
img = NULL;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mgl::Sprite screenshot_sprite;
|
mgl::Sprite screenshot_sprite;
|
||||||
if(screenshot_texture.is_valid())
|
if(screenshot_texture.is_valid())
|
||||||
|
|||||||
Reference in New Issue
Block a user