From 0ef3549a4ee14754694d1f418318ea918e039315 Mon Sep 17 00:00:00 2001 From: Eric House Date: Sat, 19 Jan 2013 15:18:36 -0800 Subject: [PATCH] handle (display) the relay's new error message --- xwords4/linux/gtkmain.c | 11 ++++++++++- xwords4/linux/main.h | 5 +++-- xwords4/linux/relaycon.c | 3 +++ xwords4/linux/relaycon.h | 1 + 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/xwords4/linux/gtkmain.c b/xwords4/linux/gtkmain.c index 62ddc65aa..c620f2552 100644 --- a/xwords4/linux/gtkmain.c +++ b/xwords4/linux/gtkmain.c @@ -26,6 +26,7 @@ #include "gtkboard.h" #include "linuxmain.h" #include "relaycon.h" +#include "gtkask.h" static void onNewData( GtkAppGlobals* apg, sqlite3_int64 rowid, XP_Bool isNew ); @@ -443,6 +444,13 @@ gtkDevIDChanged( void* closure, const XP_UCHAR* devID ) } } +static void +gtkErrorMsgRcvd( void* closure, const XP_UCHAR* msg ) +{ + GtkAppGlobals* apg = (GtkAppGlobals*)closure; + (void)gtkask( apg->window, msg, GTK_BUTTONS_OK ); +} + void onGameSaved( void* closure, sqlite3_int64 rowid, XP_Bool firstTime ) @@ -515,6 +523,7 @@ gtkmain( LaunchParams* params ) .msgReceived = gtkGotBuf, .msgNoticeReceived = gtkNoticeRcvd, .devIDChanged = gtkDevIDChanged, + .msgErrorMsg = gtkErrorMsgRcvd, }; relaycon_init( params, &procs, &apg, @@ -522,7 +531,7 @@ gtkmain( LaunchParams* params ) params->connInfo.relay.defaultSendPort ); sendRelayReg( &apg ); - (void)makeGamesWindow( &apg ); + apg.window = makeGamesWindow( &apg ); gtk_main(); closeGamesDB( apg.pDb ); diff --git a/xwords4/linux/main.h b/xwords4/linux/main.h index 942cf737c..d0cd1c0fa 100644 --- a/xwords4/linux/main.h +++ b/xwords4/linux/main.h @@ -1,6 +1,6 @@ -/* -*-mode: C; fill-column: 78; c-basic-offset: 4; -*- */ +/* -*- compile-command: "make MEMDEBUG=TRUE -j3"; -*- */ /* - * Copyright 2001-2007 by Eric House (xwords@eehouse.org). All rights + * Copyright 2001-2013 by Eric House (xwords@eehouse.org). All rights * reserved. * * This program is free software; you can redistribute it and/or @@ -238,6 +238,7 @@ typedef struct _GtkAppGlobals { LaunchParams* params; GSList* globalsList; GList* sources; + GtkWidget* window; GtkWidget* listWidget; GtkWidget* openButton; GtkWidget* deleteButton; diff --git a/xwords4/linux/relaycon.c b/xwords4/linux/relaycon.c index eb5422f83..f6e4127c6 100644 --- a/xwords4/linux/relaycon.c +++ b/xwords4/linux/relaycon.c @@ -189,6 +189,9 @@ relaycon_receive( void* closure, int socket ) (*storage->procs.msgNoticeReceived)( storage->procsClosure, ntohl(gameToken) ); break; } + case XWPDEV_MSGRSP: + (*storage->procs.msgErrorMsg)( storage->procsClosure, (XP_UCHAR*)ptr ); + break; default: XP_LOGF( "%s: Unexpected cmd %d", __func__, cmd ); XP_ASSERT( 0 ); diff --git a/xwords4/linux/relaycon.h b/xwords4/linux/relaycon.h index 962fe9fed..f1e67f725 100644 --- a/xwords4/linux/relaycon.h +++ b/xwords4/linux/relaycon.h @@ -26,6 +26,7 @@ typedef struct _Procs { void (*msgReceived)( void* closure, XP_U8* buf, XP_U16 len ); void (*msgNoticeReceived)( void* closure, XP_U32 gameToken ); void (*devIDChanged)( void* closure, const XP_UCHAR* devID ); + void (*msgErrorMsg)( void* closure, const XP_UCHAR* msg ); } RelayConnProcs; void relaycon_init( LaunchParams* params, const RelayConnProcs* procs,