commit 34b9b6ad58d45a71b6f96efc81fddbe9873b746d
parent db14584397587815e025d8ef570e825852060538
Author: sam-barr <samfbarr@outlook.com>
Date: Wed, 22 Apr 2020 16:43:50 -0500
Only call XOpenDisplay once
Diffstat:
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/paleofetch.c b/paleofetch.c
@@ -38,6 +38,7 @@
// TODO: Finish it
+Display *display;
struct utsname uname_info;
struct sysinfo my_sysinfo;
int title_length;
@@ -224,16 +225,10 @@ char *get_shell() {
}
char *get_resolution() {
- Display *display = XOpenDisplay(NULL);
- if(display == NULL) {
- status = -1;
- halt_and_catch_fire("XOpenDisplay failed");
- }
int screen = DefaultScreen(display);
int width = DisplayWidth(display, screen);
int height = DisplayHeight(display, screen);
- XCloseDisplay(display);
char *resolution = malloc(BUF_SIZE);
snprintf(resolution, BUF_SIZE, "%dx%d", width, height);
@@ -242,7 +237,6 @@ char *get_resolution() {
}
char *get_terminal() {
- Display *display = XOpenDisplay(NULL);
unsigned char *prop;
unsigned long _, // not unused, but we don't need the results
window = RootWindow(display, XDefaultScreen(display));
@@ -257,7 +251,8 @@ char *get_terminal() {
window = (prop[3] << 24) + (prop[2] << 16) + (prop[1] << 8) + prop[0];
free(prop);
GetProp(class);
- XCloseDisplay(display);
+
+#undef GetProp
char *terminal = malloc(BUF_SIZE);
snprintf(terminal, BUF_SIZE, "%s", prop);
@@ -411,6 +406,11 @@ int main(int argc, char *argv[]) {
halt_and_catch_fire("uname failed");
status = sysinfo(&my_sysinfo);
halt_and_catch_fire("sysinfo failed");
+ display = XOpenDisplay(NULL);
+ if(display == NULL) {
+ status = -1;
+ halt_and_catch_fire("XOpenDisplay failed");
+ }
cache = get_cache_file();
if(argc == 2 && strcmp(argv[1], "--recache") == 0)
@@ -474,5 +474,6 @@ int main(int argc, char *argv[]) {
free(colors1);
free(colors2);
+ XCloseDisplay(display);
free(cache);
}