summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorLeo Tenenbaum <pommicket@gmail.com>2021-05-03 18:41:31 -0400
committerLeo Tenenbaum <pommicket@gmail.com>2021-05-03 18:41:31 -0400
commit03826251f5cfecb97ee9711ed1a61d61c7e7eb71 (patch)
treeaa378f5fd8d0947fad46eeb62630eebd2dc7afdd /main.c
parent957e4995eda14377c036fda05958db0c8634f5d0 (diff)
configure address
Diffstat (limited to 'main.c')
-rw-r--r--main.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/main.c b/main.c
index 1702fb1..37de713 100644
--- a/main.c
+++ b/main.c
@@ -89,20 +89,20 @@ static void display_error_nofmt(State *state, char const *message) {
} while (0)
static void update_memory_view(State *state) {
- if (!state->pid || !state->memory_view_address)
+ if (!state->pid)
return;
+ GtkBuilder *builder = state->builder;
+ GtkListStore *memory_list = GTK_LIST_STORE(gtk_builder_get_object(builder, "memory"));
Address ndisplay = state->memory_view_entries;
+ gtk_list_store_clear(memory_list);
if (ndisplay == 0)
return;
- GtkBuilder *builder = state->builder;
uint8_t *mem = calloc(1, ndisplay);
if (mem) {
- GtkListStore *memory_list = GTK_LIST_STORE(gtk_builder_get_object(builder, "memory"));
int reader = memory_reader_open(state);
if (reader) {
GtkTreeIter iter;
ndisplay = memory_read_bytes(reader, state->memory_view_address, mem, ndisplay);
- gtk_list_store_clear(memory_list);
for (Address i = 0; i < ndisplay; ++i) {
Address addr = state->memory_view_address + i;
uint8_t value = mem[i];
@@ -127,10 +127,21 @@ G_MODULE_EXPORT void update_configuration(GtkWidget *widget, gpointer user_data)
GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "stop-while-accessing-memory")));
char const *n_entries_text = gtk_entry_get_text(
GTK_ENTRY(gtk_builder_get_object(builder, "memory-display-entries")));
- char *endp;
+ char *endp;
+ bool update_memview = false;
unsigned long n_entries = strtoul(n_entries_text, &endp, 10);
if (*n_entries_text && !*endp && n_entries != state->memory_view_entries) {
state->memory_view_entries = n_entries;
+ update_memview = true;
+ }
+ char const *address_text = gtk_entry_get_text(
+ GTK_ENTRY(gtk_builder_get_object(builder, "address")));
+ unsigned long address = strtoul(address_text, &endp, 16);
+ if (*address_text && !*endp && address != state->memory_view_address) {
+ state->memory_view_address = address;
+ update_memview = true;
+ }
+ if (update_memview) {
update_memory_view(state);
}
}