[omniORB] How can I synchronise the Xwindows main loop with omniORB ?
Duncan Grisby
dgrisby@uk.research.att.com
Tue, 28 Mar 2000 16:07:13 +0100
On Tuesday 28 March, Eric DARIEL wrote:
> But for refreshing the xwindows objects, I must register
> the X_main_loop with a file descriptor.
> How can I obtain one from omniORB ?
As I said in my previous reply, you cannot obtain a suitable file
descriptor from omniORB. You should create a pipe, with code like
#include <unistd.h>
int pipe_read;
int pipe_write;
void initPipe() {
int filedes[2];
pipe(filedes);
pipe_read = filedes[0];
pipe_write = filedes[1];
}
Now you can give X the global pipe_read file descriptor to wait upon.
Whenever you want to wake X up, simply write a character to pipe_write
using write(2). (Remember to read it out of pipe_read from the X
handling thread.) You'll probably need at least one other global
variable to indicate reason for waking X up.
Cheers,
Duncan.
--
-- Duncan Grisby \ Research Engineer --
-- AT&T Laboratories Cambridge --
-- http://www.uk.research.att.com/~dpg1 --