chiark
/
gitweb
/
~ianmdlvl
/
sympathy.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
@@
[sympathy.git]
/
apps
/
mainloop.c
diff --git
a/apps/mainloop.c
b/apps/mainloop.c
index fd2947f8af97729d5fa382f988cb4eba0e69d43c..3c7d01da7d8088372f8d5014355447a323d77c59 100644
(file)
--- a/
apps/mainloop.c
+++ b/
apps/mainloop.c
@@
-10,6
+10,9
@@
static char rcsid[] = "$Id$";
/*
* $Log$
/*
* $Log$
+ * Revision 1.6 2008/02/20 19:44:37 james
+ * @@
+ *
* Revision 1.5 2008/02/20 18:31:44 james
* *** empty log message ***
*
* Revision 1.5 2008/02/20 18:31:44 james
* *** empty log message ***
*
@@
-301,8
+304,8
@@
check_status (Context * c, Clients * cs)
}
}
-static
void
-msg_from_server (IPC_Msg * m, Context * c)
+static
int
+msg_from_server (
ANSI *a,
IPC_Msg * m, Context * c)
{
switch (m->hdr.type)
{
{
switch (m->hdr.type)
{
@@
-320,6
+323,11
@@
msg_from_server (IPC_Msg * m, Context * c)
abort ();
*(c->v) = m->vt102.vt102;
abort ();
*(c->v) = m->vt102.vt102;
+
+ if (a->one_shot) {
+ a->one_shot(a,&c->v->crt);
+ return 1;
+ }
//FIXME HTML hook
break;
case IPC_MSG_TYPE_TERM:
//FIXME HTML hook
break;
case IPC_MSG_TYPE_TERM:
@@
-331,6
+339,7
@@
msg_from_server (IPC_Msg * m, Context * c)
default:
fprintf (stderr, "Unhandeled message type %d\n", m->hdr.type);
}
default:
fprintf (stderr, "Unhandeled message type %d\n", m->hdr.type);
}
+return 0;
}
}
@@
-466,7
+475,8
@@
mainloop (TTY * tty, Socket * server_socket, Socket * client_socket,
while (client_socket->msg)
{
while (client_socket->msg)
{
- msg_from_server (client_socket->msg, &c);
+ if (msg_from_server (ansi,client_socket->msg, &c))
+ break;
socket_consume_msg (client_socket);
}
}
socket_consume_msg (client_socket);
}
}
@@
-475,10
+485,11
@@
mainloop (TTY * tty, Socket * server_socket, Socket * client_socket,
/*update our local screen */
if (ansi)
{
/*update our local screen */
if (ansi)
{
- if (ansi
_dispatch (ansi, &c)
)
-
break
;
+ if (ansi
->dispatch
)
+
ansi->dispatch (ansi, &c)
;
- ansi_update (ansi, &c);
+ if (ansi->update)
+ ansi->update (ansi, &c);
}
}
}
}