mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
Add debug_dump_scene()
Dump view_tree and osd_tree on calling debug-action. Example bind: <keybind key="A-F12"> <action name="Debug"></action> </keybind>
This commit is contained in:
parent
532656ad5b
commit
5934ed6682
5 changed files with 69 additions and 1 deletions
9
include/debug.h
Normal file
9
include/debug.h
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
|
#ifndef __DEBUG_H
|
||||||
|
#define __DEBUG_H
|
||||||
|
|
||||||
|
struct server;
|
||||||
|
|
||||||
|
void debug_dump_scene(struct server *server);
|
||||||
|
|
||||||
|
#endif /* __DEBUG_H */
|
||||||
|
|
@ -173,6 +173,7 @@ struct server {
|
||||||
struct view *cycle_view;
|
struct view *cycle_view;
|
||||||
|
|
||||||
struct theme *theme;
|
struct theme *theme;
|
||||||
|
|
||||||
struct menu *rootmenu;
|
struct menu *rootmenu;
|
||||||
struct menu *windowmenu;
|
struct menu *windowmenu;
|
||||||
};
|
};
|
||||||
|
|
@ -476,6 +477,7 @@ void server_start(struct server *server);
|
||||||
void server_finish(struct server *server);
|
void server_finish(struct server *server);
|
||||||
|
|
||||||
/* update onscreen display 'alt-tab' buffer */
|
/* update onscreen display 'alt-tab' buffer */
|
||||||
|
void osd_finish(struct server *server);
|
||||||
void osd_update(struct server *server);
|
void osd_update(struct server *server);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
#include <wlr/util/log.h>
|
#include <wlr/util/log.h>
|
||||||
#include "common/spawn.h"
|
#include "common/spawn.h"
|
||||||
#include "common/zfree.h"
|
#include "common/zfree.h"
|
||||||
|
#include "debug.h"
|
||||||
#include "labwc.h"
|
#include "labwc.h"
|
||||||
#include "menu/menu.h"
|
#include "menu/menu.h"
|
||||||
#include "ssd.h"
|
#include "ssd.h"
|
||||||
|
|
@ -161,7 +162,7 @@ action(struct view *activator, struct server *server, struct wl_list *actions, u
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ACTION_TYPE_DEBUG:
|
case ACTION_TYPE_DEBUG:
|
||||||
/* nothing */
|
debug_dump_scene(server);
|
||||||
break;
|
break;
|
||||||
case ACTION_TYPE_EXECUTE:
|
case ACTION_TYPE_EXECUTE:
|
||||||
{
|
{
|
||||||
|
|
|
||||||
55
src/debug.c
Normal file
55
src/debug.c
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
#include <wlr/types/wlr_scene.h>
|
||||||
|
#include "buffer.h"
|
||||||
|
#include "labwc.h"
|
||||||
|
|
||||||
|
#define INDENT_SIZE (3)
|
||||||
|
|
||||||
|
static char *
|
||||||
|
get_node_type(enum wlr_scene_node_type type)
|
||||||
|
{
|
||||||
|
switch (type) {
|
||||||
|
case WLR_SCENE_NODE_ROOT:
|
||||||
|
return "root";
|
||||||
|
case WLR_SCENE_NODE_TREE:
|
||||||
|
return "tree";
|
||||||
|
case WLR_SCENE_NODE_SURFACE:
|
||||||
|
return "surface";
|
||||||
|
case WLR_SCENE_NODE_RECT:
|
||||||
|
return "rect";
|
||||||
|
case WLR_SCENE_NODE_BUFFER:
|
||||||
|
return "buffer";
|
||||||
|
}
|
||||||
|
return "error";
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
dump_tree(struct wlr_scene_node *node, int pos, int x, int y)
|
||||||
|
{
|
||||||
|
char *type = get_node_type(node->type);
|
||||||
|
|
||||||
|
if (pos) {
|
||||||
|
printf("%*c+-- ", pos, ' ');
|
||||||
|
}
|
||||||
|
printf("%s (%d,%d) [%p]\n", type, x, y, node);
|
||||||
|
|
||||||
|
struct wlr_scene_node *child;
|
||||||
|
wl_list_for_each(child, &node->state.children, state.link) {
|
||||||
|
dump_tree(child, pos + INDENT_SIZE, x + child->state.x,
|
||||||
|
y + child->state.y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
debug_dump_scene(struct server *server)
|
||||||
|
{
|
||||||
|
struct wlr_scene_node *node;
|
||||||
|
|
||||||
|
printf(":: view_tree ::\n");
|
||||||
|
node = &server->view_tree->node;
|
||||||
|
dump_tree(node, 0, node->state.x, node->state.y);
|
||||||
|
|
||||||
|
printf(":: osd_tree ::\n");
|
||||||
|
node = &server->osd_tree->node;
|
||||||
|
dump_tree(node, 0, node->state.x, node->state.y);
|
||||||
|
}
|
||||||
|
|
@ -3,6 +3,7 @@ labwc_sources = files(
|
||||||
'buffer.c',
|
'buffer.c',
|
||||||
'cursor.c',
|
'cursor.c',
|
||||||
'damage.c',
|
'damage.c',
|
||||||
|
'debug.c',
|
||||||
'desktop.c',
|
'desktop.c',
|
||||||
'foreign.c',
|
'foreign.c',
|
||||||
'interactive.c',
|
'interactive.c',
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue