[Brlcad-commits] CVS: brlcad/src/libfb if_ogl.c,14.11,14.12
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: Sean M. <br...@us...> - 2005-05-09 17:24:45
|
Update of /cvsroot/brlcad/brlcad/src/libfb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30800 Modified Files: if_ogl.c Log Message: do not let any key press or mouse release make the lingering framebuffer disappear (!). also do not close stderr since that is what the child uses when fb_logging. stub in the same behavior as the X24 interface where it reports the rgb value at a particular coordinate. Index: if_ogl.c =================================================================== RCS file: /cvsroot/brlcad/brlcad/src/libfb/if_ogl.c,v retrieving revision 14.11 retrieving revision 14.12 diff -w -u -r14.11 -r14.12 --- if_ogl.c 9 May 2005 14:32:34 -0000 14.11 +++ if_ogl.c 9 May 2005 17:24:31 -0000 14.12 @@ -783,15 +783,15 @@ signal( SIGUSR1, sigkid); - if( (f = fork()) > 0 ) { + if( (f = fork()) != 0 ) { /* Parent process */ int k; + /* parent doesn't need these any more */ for(k=0; k< 20; k++) { - (void) close(k); + close(k); } - /* * Wait until the child dies, of whatever cause, * or until the child kills us. @@ -1184,13 +1184,13 @@ * * The simple for i=0..20 loop will not work, because that * smashes some window-manager files. Therefore, we content - * ourselves with eliminating stdin, stdout, and stderr, - * (fd 0,1,2), in the hopes that this will successfully - * terminate any pipes or network connections. + * ourselves with eliminating stdin and stdout (fd 0,1), in the + * hopes that this will successfully terminate any pipes or + * network connections. Standard error is used to print + * framebuffer debug messages, so it's kept around. */ fclose( stdin ); fclose( stdout ); - fclose( stderr ); /* Ignore likely signals, perhaps in the background, * from other typing at the keyboard @@ -2150,15 +2150,50 @@ expose_callback(ifp, &event); break; case ButtonPress: + { + int button = (int) event.xbutton.button; + if (button == Button1) { + /* Check for single button mouse remap. + * ctrl-1 => 2 + * meta-1 => 3 + */ + if (event.xbutton.state & ControlMask) + button = Button2; + else if (event.xbutton.state & Mod1Mask) + button = Button3; + } + + switch(button){ + case Button1: break; - case ButtonRelease: - OGL(ifp)->alive = 0; + case Button2: + { + int x, y; + int ix, iy; + unsigned char cp[3] = {0}; + + x = event.xbutton.x; + y = event.xbutton.y; + + if(x < 0 || y < 0){ + fb_log("No RGB (outside image viewport)\n"); break; - case KeyPress: + } + + fb_log("At image (%d, %d), real RGB=(%3d %3d %3d) UNIMPLEMENTED\n", + x, y, cp[RED], cp[GRN], cp[BLU]); + break; - case KeyRelease: + } + case Button3: OGL(ifp)->alive = 0; break; + default: + fb_log("unhandled mouse event\n"); + break; + } + break; + } case ConfigureNotify: { XConfigureEvent *conf = (XConfigureEvent *)&event; |