summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Bornecrantz <jakob@vmware.com>2009-06-06 03:24:21 +0100
committerJakob Bornecrantz <jakob@vmware.com>2009-06-06 03:24:21 +0100
commit359805d723586ba39c83cadf481a04e8ae8ce674 (patch)
treef734ee8a3c213fc9b0c164c2bc6c3cfa0f94aed7
parentf742e71f20f2720fa6678014637051e2f75d384a (diff)
Add flush button
-rw-r--r--res/main.xml11
-rw-r--r--src/context.c15
-rw-r--r--src/main.c3
-rw-r--r--src/program.h1
4 files changed, 30 insertions, 0 deletions
diff --git a/res/main.xml b/res/main.xml
index c208043..8f8e485 100644
--- a/res/main.xml
+++ b/res/main.xml
@@ -77,6 +77,17 @@
</packing>
</child>
<child>
+ <object class="GtkToolButton" id="tool_flush">
+ <property name="label" translatable="yes">Flush</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-convert</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkSeparatorToolItem" id="tool_separator"/>
<packing>
<property name="expand">False</property>
diff --git a/src/context.c b/src/context.c
index 3ecd64f..2ed0cf8 100644
--- a/src/context.c
+++ b/src/context.c
@@ -116,6 +116,17 @@ static void step(GtkWidget *widget, struct program *p)
RBUG_BLOCK_BEFORE | RBUG_BLOCK_AFTER, NULL);
}
+static void flush(GtkWidget *widget, struct program *p)
+{
+ (void)widget;
+
+ rbug_send_context_flush(p->rbug.con, p->selected.id,
+ PIPE_FLUSH_TEXTURE_CACHE |
+ PIPE_FLUSH_RENDER_CACHE, NULL);
+
+ context_start_info_action(p->selected.id, &p->selected.iter, FALSE, p);
+}
+
static gboolean blocked(struct rbug_event *e, struct rbug_header *h, struct program *p)
{
struct rbug_proto_context_draw_blocked *b = (struct rbug_proto_context_draw_blocked *)h;
@@ -177,6 +188,7 @@ void context_unselected(struct program *p)
gtk_widget_hide(p->tool.break_before);
gtk_widget_hide(p->tool.break_after);
gtk_widget_hide(p->tool.step);
+ gtk_widget_hide(p->tool.flush);
gtk_widget_hide(p->tool.separator);
for (i = 0; i < CTX_VIEW_NUM; i++)
@@ -184,6 +196,7 @@ void context_unselected(struct program *p)
g_signal_handler_disconnect(p->tool.step, p->context.sid[12]);
g_signal_handler_disconnect(p->tool.break_before, p->context.sid[13]);
g_signal_handler_disconnect(p->tool.break_after, p->context.sid[14]);
+ g_signal_handler_disconnect(p->tool.flush, p->context.sid[15]);
}
void context_selected(struct program *p)
@@ -196,11 +209,13 @@ void context_selected(struct program *p)
p->context.sid[12] = g_signal_connect(p->tool.step, "clicked", G_CALLBACK(step), p);
p->context.sid[13] = g_signal_connect(p->tool.break_before, "toggled", G_CALLBACK(break_before), p);
p->context.sid[14] = g_signal_connect(p->tool.break_after, "toggled", G_CALLBACK(break_after), p);
+ p->context.sid[15] = g_signal_connect(p->tool.flush, "clicked", G_CALLBACK(flush), p);
gtk_widget_show(p->main.context_view);
gtk_widget_show(p->tool.break_before);
gtk_widget_show(p->tool.break_after);
gtk_widget_show(p->tool.step);
+ gtk_widget_show(p->tool.flush);
gtk_widget_show(p->tool.separator);
context_start_info_action(p->selected.id, &p->selected.iter, FALSE, p);
diff --git a/src/main.c b/src/main.c
index 50728cc..a3a80dd 100644
--- a/src/main.c
+++ b/src/main.c
@@ -369,6 +369,7 @@ void main_window_create(struct program *p)
GObject *tool_break_before;
GObject *tool_break_after;
GObject *tool_step;
+ GObject *tool_flush;
GObject *tool_separator;
GObject *tool_back;
@@ -403,6 +404,7 @@ void main_window_create(struct program *p)
tool_break_before = gtk_builder_get_object(builder, "tool_break_before");
tool_break_after = gtk_builder_get_object(builder, "tool_break_after");
tool_step = gtk_builder_get_object(builder, "tool_step");
+ tool_flush = gtk_builder_get_object(builder, "tool_flush");
tool_separator = gtk_builder_get_object(builder, "tool_separator");
tool_back = gtk_builder_get_object(builder, "tool_back");
@@ -448,6 +450,7 @@ void main_window_create(struct program *p)
p->tool.break_before = GTK_WIDGET(tool_break_before);
p->tool.break_after = GTK_WIDGET(tool_break_after);
p->tool.step = GTK_WIDGET(tool_step);
+ p->tool.flush = GTK_WIDGET(tool_flush);
p->tool.separator = GTK_WIDGET(tool_separator);
p->tool.back = GTK_WIDGET(tool_back);
diff --git a/src/program.h b/src/program.h
index 51e40bf..c49101e 100644
--- a/src/program.h
+++ b/src/program.h
@@ -118,6 +118,7 @@ struct program
GtkWidget *break_before;
GtkWidget *break_after;
GtkWidget *step;
+ GtkWidget *flush;
GtkWidget *separator;
GtkWidget *back;