Put damage tracking debugging behind a flag

This commit is contained in:
Jente Hidskes 2019-01-25 15:36:04 +01:00
parent e981cb8a1c
commit 667667505a
3 changed files with 49 additions and 6 deletions

42
cage.c
View file

@ -10,6 +10,7 @@
#include "config.h" #include "config.h"
#include <getopt.h>
#include <signal.h> #include <signal.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@ -97,6 +98,42 @@ handle_signal(int signal, void *data)
} }
} }
static void
usage(FILE *file, const char *cage)
{
fprintf(file, "Usage: %s APPLICATION\n"
"\n"
" -D\t Turn on damage tracking debugging\n"
" -h\t Display this help message\n",
cage);
}
static bool
parse_args(struct cg_server *server, int argc, char *argv[])
{
int c;
while ((c = getopt(argc, argv, "hD")) != -1) {
switch (c) {
case 'D':
server->debug_damage_tracking = true;
break;
case 'h':
usage(stdout, argv[0]);
return false;
default:
usage(stderr, argv[0]);
return false;
}
}
if (optind == 0) {
usage(stderr, argv[0]);
return false;
}
return true;
}
int int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
@ -112,8 +149,7 @@ main(int argc, char *argv[])
#endif #endif
int ret = 0; int ret = 0;
if (argc < 2) { if (!parse_args(&server, argc, argv)) {
printf("Usage: %s APPLICATION\n", argv[0]);
return 1; return 1;
} }
@ -259,7 +295,7 @@ main(int argc, char *argv[])
#endif #endif
pid_t pid; pid_t pid;
if (!spawn_primary_client(argv + 1, &pid)) { if (!spawn_primary_client(argv + optind, &pid)) {
ret = 1; ret = 1;
goto end; goto end;
} }

View file

@ -219,8 +219,9 @@ handle_output_damage_frame(struct wl_listener *listener, void *data)
} }
#ifdef DEBUG #ifdef DEBUG
// TODO: guard this behind a flag. if (output->server->debug_damage_tracking) {
wlr_renderer_clear(renderer, (float[]){1, 0, 0, 1}); wlr_renderer_clear(renderer, (float[]){1, 0, 0, 1});
}
#endif #endif
float color[4] = {0.3, 0.3, 0.3, 1.0}; float color[4] = {0.3, 0.3, 0.3, 1.0};
@ -255,7 +256,9 @@ handle_output_damage_frame(struct wl_listener *listener, void *data)
wlr_renderer_end(renderer); wlr_renderer_end(renderer);
#ifdef DEBUG #ifdef DEBUG
pixman_region32_union_rect(&damage, &damage, 0, 0, output_width, output_height); if (output->server->debug_damage_tracking) {
pixman_region32_union_rect(&damage, &damage, 0, 0, output_width, output_height);
}
#endif #endif
enum wl_output_transform transform = wlr_output_transform_invert(output->wlr_output->transform); enum wl_output_transform transform = wlr_output_transform_invert(output->wlr_output->transform);

View file

@ -36,6 +36,10 @@ struct cg_server {
#if CAGE_HAS_XWAYLAND #if CAGE_HAS_XWAYLAND
struct wl_listener new_xwayland_surface; struct wl_listener new_xwayland_surface;
#endif #endif
#ifdef DEBUG
bool debug_damage_tracking;
#endif
}; };
void set_window_title(struct cg_server *server, struct cg_view *view); void set_window_title(struct cg_server *server, struct cg_view *view);