mirror of
https://github.com/torvalds/linux.git
synced 2024-12-21 10:31:54 +00:00
175729fc2c
The cache.h header doesn't use any of the definitions in some of the headers it includes, ditch them and fix the fallout, where files were getting stuff they needed just because they were including it, sometimes not using what it really exports at all. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-l6r2bmj8h1g3e01wr981on0n@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
114 lines
2.3 KiB
C
114 lines
2.3 KiB
C
#include "../util.h"
|
|
#include "../../util/util.h"
|
|
#include "../../util/debug.h"
|
|
#include "gtk.h"
|
|
|
|
#include <string.h>
|
|
|
|
|
|
struct perf_gtk_context *pgctx;
|
|
|
|
struct perf_gtk_context *perf_gtk__activate_context(GtkWidget *window)
|
|
{
|
|
struct perf_gtk_context *ctx;
|
|
|
|
ctx = malloc(sizeof(*pgctx));
|
|
if (ctx)
|
|
ctx->main_window = window;
|
|
|
|
return ctx;
|
|
}
|
|
|
|
int perf_gtk__deactivate_context(struct perf_gtk_context **ctx)
|
|
{
|
|
if (!perf_gtk__is_active_context(*ctx))
|
|
return -1;
|
|
|
|
zfree(ctx);
|
|
return 0;
|
|
}
|
|
|
|
static int perf_gtk__error(const char *format, va_list args)
|
|
{
|
|
char *msg;
|
|
GtkWidget *dialog;
|
|
|
|
if (!perf_gtk__is_active_context(pgctx) ||
|
|
vasprintf(&msg, format, args) < 0) {
|
|
fprintf(stderr, "Error:\n");
|
|
vfprintf(stderr, format, args);
|
|
fprintf(stderr, "\n");
|
|
return -1;
|
|
}
|
|
|
|
dialog = gtk_message_dialog_new_with_markup(GTK_WINDOW(pgctx->main_window),
|
|
GTK_DIALOG_DESTROY_WITH_PARENT,
|
|
GTK_MESSAGE_ERROR,
|
|
GTK_BUTTONS_CLOSE,
|
|
"<b>Error</b>\n\n%s", msg);
|
|
gtk_dialog_run(GTK_DIALOG(dialog));
|
|
|
|
gtk_widget_destroy(dialog);
|
|
free(msg);
|
|
return 0;
|
|
}
|
|
|
|
#ifdef HAVE_GTK_INFO_BAR_SUPPORT
|
|
static int perf_gtk__warning_info_bar(const char *format, va_list args)
|
|
{
|
|
char *msg;
|
|
|
|
if (!perf_gtk__is_active_context(pgctx) ||
|
|
vasprintf(&msg, format, args) < 0) {
|
|
fprintf(stderr, "Warning:\n");
|
|
vfprintf(stderr, format, args);
|
|
fprintf(stderr, "\n");
|
|
return -1;
|
|
}
|
|
|
|
gtk_label_set_text(GTK_LABEL(pgctx->message_label), msg);
|
|
gtk_info_bar_set_message_type(GTK_INFO_BAR(pgctx->info_bar),
|
|
GTK_MESSAGE_WARNING);
|
|
gtk_widget_show(pgctx->info_bar);
|
|
|
|
free(msg);
|
|
return 0;
|
|
}
|
|
#else
|
|
static int perf_gtk__warning_statusbar(const char *format, va_list args)
|
|
{
|
|
char *msg, *p;
|
|
|
|
if (!perf_gtk__is_active_context(pgctx) ||
|
|
vasprintf(&msg, format, args) < 0) {
|
|
fprintf(stderr, "Warning:\n");
|
|
vfprintf(stderr, format, args);
|
|
fprintf(stderr, "\n");
|
|
return -1;
|
|
}
|
|
|
|
gtk_statusbar_pop(GTK_STATUSBAR(pgctx->statbar),
|
|
pgctx->statbar_ctx_id);
|
|
|
|
/* Only first line can be displayed */
|
|
p = strchr(msg, '\n');
|
|
if (p)
|
|
*p = '\0';
|
|
|
|
gtk_statusbar_push(GTK_STATUSBAR(pgctx->statbar),
|
|
pgctx->statbar_ctx_id, msg);
|
|
|
|
free(msg);
|
|
return 0;
|
|
}
|
|
#endif
|
|
|
|
struct perf_error_ops perf_gtk_eops = {
|
|
.error = perf_gtk__error,
|
|
#ifdef HAVE_GTK_INFO_BAR_SUPPORT
|
|
.warning = perf_gtk__warning_info_bar,
|
|
#else
|
|
.warning = perf_gtk__warning_statusbar,
|
|
#endif
|
|
};
|