RPC and redrawing a window (long)
- From: "K. M. Hawarden-Ogata" <hawarden duke ifa hawaii edu>
- To: "GTK List" <gtk-list redhat com>
- Subject: RPC and redrawing a window (long)
- Date: Tue, 18 May 1999 11:28:40 -1000
Hello All,
I hope someone can help me with this. Unfortunately it requires some
knowledge of rpcs, I think
(if you don't know what that is, you can probably forget the rest of this
message =) ).
I have a GUI application that is supposed to talk to another computer over a
network, using rpcs. While the connection is being created, a message is
supposed to be displayed in my drawing area that lets the user know that the
program is attempting to set up a connection. This worked fine under Motif:
if( (tval.tv_sec % Lc.interval) == 0)
{
collecting_data_msg(); /*this is supposed to print the message.
See code below.*/
/* get sample from temperature controller */
if( (rc=rpc_temper_get_values( Lc.hostname, 0, &sam )) != ERR_NONE )
{
XmtCliPrintf( Cli_w, "rpc_temper_get_values(): ERROR %s",
Error_string[abs(rc)]);
return;
}
/* record ems of communication */
Lc.rpc_ems = elapse_ms( &tval );
blah blah
}
void collecting_data_msg( void )
{
Widget widget = Status_w;
Display *dpy = XtDisplay( widget );
Window window = XtWindow( widget );
Dimension da_wid, da_hgt;
int x, y, l,
char_wid, char_hgt;
char *c;
char_wid = Nor_font_wid;
char_hgt = Nor_font_hgt;
XtVaGetValues( widget, XmNwidth, &da_wid, XmNheight, &da_hgt, NULL);
c = " Collecting Data, Please Wait ";
l = strlen( c );
y = da_hgt - (2*char_hgt);
x = (da_wid - (l*char_wid))/2;
XSetForeground( dpy, Nor_gc, CM_color[CM_YELLOW]);
XSetBackground( dpy, Nor_gc, CM_color[CM_RED]);
XDrawImageString( dpy, window, Nor_gc, x, y, c, l);
XSetBackground( dpy, Nor_gc, CM_color[CM_BLACK]);
XFlush(dpy);
}
Okay, so when I rewrote these functions under GTK, my collecting_data_msg
looks like this:
void collecting_data_msg( )
{
int x, y, l,
char_wid, char_hgt,
da_wid, da_hgt;
char *c;
gdk_window_get_size( Status_w->window, &da_wid, &da_hgt);
char_wid = Fixed_font_wid;
char_hgt = Fixed_font_hgt;
c = " Collecting Data, Please Wait ";
l = strlen( c );
y = da_hgt - (2*char_hgt);
x = (da_wid - (l*char_wid))/2;
gdk_gc_set_foreground( Nor_gc, &CM.colors[CM_RED] );
gdk_draw_rectangle( Status_w->window, Nor_gc, TRUE, x, y-(char_hgt-3),
l*char_wid, char_hgt );
gdk_gc_set_foreground( Nor_gc, &CM.colors[CM_YELLOW] );
gdk_draw_text( Status_w->window, Fixed_font, Nor_gc, x, y, c, l );
printf( "collecting_data_msg: %s\n", c );
}
the function call is:
if( (tval.tv_sec % Lc.interval) == 0)
{
Lc.collect = 1;
collecting_data_msg( );
printf( "TIMER_FUNCTION: if( (tval.tv_sec mod Lc.interval) == 0)\n" );
/* get sample from temperature controller */
if( (rc=rpc_temper_get_values( Lc.hostname, 0, &sam )) != ERR_NONE )
{
printTextOut( "rpc_temper_get_values():\n ERROR %s",
Error_string[abs(rc)] );
return 0;
}
/* record ems of communication */
Lc.rpc_ems = elapse_ms( &tval );
blah blah
}
The strange part is that the printf statement in the collecting_data_msg
function is printed, but the string is not printed on the drawing area
widget until the rpc stuff times out. I'm afraid I don't know a lot about
RPCs, but as far as I can tell, the actually rpc calls are working fine.
Thank you so much if you can help,
Miranda
/------------------------------------------------------------------------\
| Miranda Hawarden-Ogata Email: hawarden@irtf.ifa.hawaii.edu |
| NASA IRTF, Institute of Astronomy Phone: (808) 974-4206 |
| 1175 Manono St., Bldg 393 Fax: (808) 974-4207 |
| Hilo, HI 96720 |
\------------------------------------------------------------------------/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]