st ? "on" : "off");
}
+void _waylend_tbm_monitor_client_debug_level(int argc, char *argv[],
+ char *reply, int *len, struct wayland_tbm_client *tbm_client)
+{
+ int debug_level = TBM_LOG_LEVEL_NONE;
+ int i;
+
+ for (i = 1; i < argc; i++) {
+ if (_waylend_tbm_util_debug_level_parse(argv[i], &debug_level))
+ break;
+ }
+
+ _waylend_tbm_util_set_log_level(debug_level);
+ WL_TBM_MONITOR_SNPRINTF(reply, *len, "client(%d): set tbm_log debug_level(%d)\n", getpid(), debug_level);
+}
+
static struct {
const char *opt;
void (*func)(int argc, char *argv[], char *reply, int *len, struct wayland_tbm_client *tbm_client);
"trace",
_waylend_tbm_monitor_client_trace,
},
+ {
+ "debug_level",
+ _waylend_tbm_monitor_client_debug_level,
+ },
};
static void
#include <tbm_bufmgr.h>
#include <wayland-util.h>
+#include <tbm_log.h>
#define HAVE_DLOG
#ifdef HAVE_DLOG
_waylend_tbm_util_scale_parse(char * scale_str, double *scale);
int
+_waylend_tbm_util_debug_level_parse(char * str, int *debug_level);
+
+int
_wayland_tbm_util_show_path_parse(char * path_str, char * cwd, struct wayland_tbm_monitor_path *path);
WL_TBM_MONITOR_PROC_STATE
char *
_wayland_tbm_dump_directory_make(void);
+void
+_waylend_tbm_util_set_log_level(int debug_level);
+
+
int wayland_tbm_monitor_server_init(struct wayland_tbm_server *tbm_srv);
#ifdef __cplusplus
_send_request_to_client_with_wait(r, &target, 1);
}
+static void
+_waylend_tbm_monitor_server_debug_level(struct wayland_tbm_monitore_request *r)
+{
+ struct wayland_tbm_monitor_target target = {.all = 1, .server = 1, .pid = {0} };
+ int debug_level = TBM_LOG_LEVEL_NONE;
+ int i;
+
+ for (i = 1; i < r->argc; i++) {
+ if (_waylend_tbm_util_target_parse(r->argv[i], &target))
+ continue;
+ if (_waylend_tbm_util_debug_level_parse(r->argv[i], &debug_level))
+ continue;
+
+ _wayland_tbm_monitor_request_printf(r, "'%s' - unknown target or debug_level for -log_level\n", r->argv[2]);
+ _wayland_tbm_monitor_server_usage(r);
+ return;
+ }
+
+ if (target.server) {
+ _waylend_tbm_util_set_log_level(debug_level);
+ _wayland_tbm_monitor_request_printf(r, "server: set tbm_log debug_level(%d)\n", debug_level);
+ }
+ _send_request_to_client_with_wait(r, &target, 1);
+}
+
static struct {
const char *opt;
void (*func)(struct wayland_tbm_monitore_request *r);
"\t""wayland-tbm-monitor -dump_queue all scale=0.5\n"
"\t""wayland-tbm-monitor -dump_queue server,1,2 scale=0.5\n"
"\t""wayland-tbm-monitor -dump_queue off"
+ },
+ {
+ "debug_level",
+ _waylend_tbm_monitor_server_debug_level,
+ "set the debug level of the TBM"
+ ,
+ "[<target>] <debug_level>\n"
+ "\t"" <target>\n"
+ "\t"" all - clients and server(by default)\n"
+ "\t"" server,<pid>,... - list of targets\n"
+ "\t"" <debug_level>\n"
+ "\t"" error - show error level.\n"
+ "\t"" warning - show warning and error level. \n"
+ "\t"" info - show information, warning and error level\n"
+ "\t"" debug - show debug, information, warning and error level\n"
+ ,
+ "\n"
+ "\t""wayland-tbm-monitor -debug_level error server\n"
+ "\t""wayland-tbm-monitor -debug_level debug server,1,2\n"
}
};
return 1;
}
-
int
_waylend_tbm_util_scale_parse(char * scale_str, double *scale)
{
return 0;
}
+int
+_waylend_tbm_util_debug_level_parse(char * str, int *debug_level)
+{
+ if (!str)
+ return 0;
+
+ if (!strncmp(str, "error", 5))
+ *debug_level = TBM_LOG_LEVEL_ERR;
+ else if (!strncmp(str, "warning", 7))
+ *debug_level = TBM_LOG_LEVEL_WRN;
+ else if (!strncmp(str, "info", 4))
+ *debug_level = TBM_LOG_LEVEL_INFO;
+ else if (!strncmp(str, "debug", 5))
+ *debug_level = TBM_LOG_LEVEL_DBG;
+ else
+ return 0;
+
+ return 1;
+}
+
WL_TBM_MONITOR_PROC_STATE
_waylend_tbm_util_proc_state_parse(char *str)
{
return fullpath;
}
+
+void
+_waylend_tbm_util_set_log_level(int level)
+{
+ tbm_log_set_debug_level(level);
+}