From: Diederick C. N. <dc...@gm...> - 2012-11-23 06:27:05
|
Hi All, I'm going through all the callback code and notice that in fg_internal.h, there is a callback type FGCBSelect defined on line 205. I can however not find anything matching this in the whole codebase (also tried a grep for (int, int, int), its signature) and no glutSelectFunc exists. I just traced down history, and this definition has been there since the very first code import (revisions 2 and 3). Shall I just get rid of it, or does somebody know what it is? Best, Dee |
From: <ipe...@it...> - 2012-11-23 08:41:25
|
Hi Dee and John F, just a reminder regarding the entry func issue and the need to save the current window inside INVOKE_WCB macro (pending since June). quoting Dee's post: > John F, how do you feel about the proposed? And maybe trying to clean > up some call sequences. E.g. Previously it ws suggested to do a > reshape immediately instead of only when the window is redisplayed. > There might be other places that can be simplified and clarified. If > you're busy, maybe, if you have any, you could share some initial > thoughts about the proposed? The proposed code for INVOKE_WCB is (with Jason Wilkins contribution): #if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE) /* FIXME: also WinCE? */ #define INVOKE_WCB(window,cbname,arg_list) \ do \ { \ if( FETCH_WCB( window, cbname ) ) \ { \ SFG_Window *_saved_window; \ FGCB ## cbname func = (FGCB ## cbname)(FETCH_WCB( window, cbname )); \ _saved_window = fgStructure.CurrentWindow; \ fgSetWindow( &window ); \ func arg_list; \ if (fgStructure.CurrentWindow==&(window)) \ fgStructure.CurrentWindow = _saved_window; \ } \ } while( 0 ) #else #define INVOKE_WCB(window,cbname,arg_list) \ do \ { \ if( FETCH_WCB( window, cbname ) ) \ { \ SFG_Window *_saved_window; \ _saved_window = fgStructure.CurrentWindow; \ fgSetWindow( &window ); \ ((FGCB ## cbname)FETCH_WCB( window, cbname )) arg_list; \ if (fgStructure.CurrentWindow==&(window)) \ fgStructure.CurrentWindow = _saved_window; \ } \ } while( 0 ) #endif The if condition is to allow for a change of the current window inside the user callback with glutSetWindow. Below is the sample code to try with and without the proposed modification. You can see that without the modification, the window doesn't get displayed and the menu doesn't appear. #include <GL/freeglut.h> #include <stdio.h> static int sequence_number=0; static void Display(void) { int window=glutGetWindow(); printf ("%6d Window %d Display Callback\n", ++sequence_number, window ); glClear ( GL_COLOR_BUFFER_BIT ); glutSwapBuffers(); } static void Entry(int state) { int window=glutGetWindow () ; printf ("%6d Window %d Entry Callback: %d\n", ++sequence_number, window, state); } static void SampleMenu(int a) { printf("Menu clicked %d\n", a); } int main(int argc, char *argv[]) { glutInitWindowSize(400, 250); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); glutInit(&argc, argv); int freeglut_window=glutCreateWindow("INVOKE_WCB Issue"); glClearColor(1.0, 1.0, 1.0, 1.0); glutDisplayFunc(Display); glutEntryFunc(Entry) ; int menuID=glutCreateMenu(SampleMenu); glutAddMenuEntry("Entry one", 1); glutAddMenuEntry("Entry two", 2); glutAttachMenu(GLUT_RIGHT_BUTTON); glutMainLoop(); return 0; } All the testing has been done with 2.8.0. If the problems have been solved with the current trunk, forgive me for the bother. Regards Ioannis ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program. |
From: John F. F. <joh...@cy...> - 2012-11-23 13:38:53
|
Dee, As one last check, I'd look in the GLUT source code and make sure it's not there. If it's not in GLUT, then we may as well remove it. - John On 11/23/2012 12:26 AM, Diederick C. Niehorster wrote: > Hi All, > > I'm going through all the callback code and notice that in > fg_internal.h, there is a callback type FGCBSelect defined on line > 205. I can however not find anything matching this in the whole > codebase (also tried a grep for (int, int, int), its signature) and no > glutSelectFunc exists. > I just traced down history, and this definition has been there since > the very first code import (revisions 2 and 3). > > Shall I just get rid of it, or does somebody know what it is? > > Best, > Dee > > ------------------------------------------------------------------------------ > Monitor your physical, virtual and cloud infrastructure from a single > web console. Get in-depth insight into apps, servers, databases, vmware, > SAP, cloud infrastructure, etc. Download 30-day Free Trial. > Pricing starts from $795 for 25 servers or applications! > http://p.sf.net/sfu/zoho_dev2dev_nov > _______________________________________________ > Freeglut-developer mailing list > Fre...@li... > https://lists.sourceforge.net/lists/listinfo/freeglut-developer > > |
From: Diederick C. N. <dc...@gm...> - 2012-11-24 01:24:37
|
Hi John, This should be save to delete. GLUT has a select callback for menus, which is called when a menu item is selected. We have got one too, but called it FGCBMenu. GLUT's select callback has the same signature as our FGCBMenu by the way, not the void (* callback) (int, int, int) the FGCBSelect has, but nothing else in glut's source that we don't already have has this signature. I've kicked out this callback in r 1488. Best, Dee On Fri, Nov 23, 2012 at 9:13 PM, John F. Fay <joh...@cy...> wrote: > Dee, > > As one last check, I'd look in the GLUT source code and make sure > it's not there. If it's not in GLUT, then we may as well remove it. > > - John > > > On 11/23/2012 12:26 AM, Diederick C. Niehorster wrote: >> Hi All, >> >> I'm going through all the callback code and notice that in >> fg_internal.h, there is a callback type FGCBSelect defined on line >> 205. I can however not find anything matching this in the whole >> codebase (also tried a grep for (int, int, int), its signature) and no >> glutSelectFunc exists. >> I just traced down history, and this definition has been there since >> the very first code import (revisions 2 and 3). >> >> Shall I just get rid of it, or does somebody know what it is? >> >> Best, >> Dee >> >> ------------------------------------------------------------------------------ >> Monitor your physical, virtual and cloud infrastructure from a single >> web console. Get in-depth insight into apps, servers, databases, vmware, >> SAP, cloud infrastructure, etc. Download 30-day Free Trial. >> Pricing starts from $795 for 25 servers or applications! >> http://p.sf.net/sfu/zoho_dev2dev_nov >> _______________________________________________ >> Freeglut-developer mailing list >> Fre...@li... >> https://lists.sourceforge.net/lists/listinfo/freeglut-developer >> >> > > ------------------------------------------------------------------------------ > Monitor your physical, virtual and cloud infrastructure from a single > web console. Get in-depth insight into apps, servers, databases, vmware, > SAP, cloud infrastructure, etc. Download 30-day Free Trial. > Pricing starts from $795 for 25 servers or applications! > http://p.sf.net/sfu/zoho_dev2dev_nov > _______________________________________________ > Freeglut-developer mailing list > Fre...@li... > https://lists.sourceforge.net/lists/listinfo/freeglut-developer |
From: Diederick C. N. <dc...@gm...> - 2012-11-25 11:06:12
|
Hi Ioannis, Menus work again due to different fixes. But it is true that on windows at least, the display callback is never called after the window is created, until you do any interaction with the window. I'm trying to track this down, but no luck yet... Best, Dee On Fri, Nov 23, 2012 at 4:41 PM, <ipe...@it...> wrote: > Hi Dee and John F, > just a reminder regarding the entry func issue and the need to save > the current window inside INVOKE_WCB macro (pending since June). > > quoting Dee's post: >> John F, how do you feel about the proposed? And maybe trying to clean >> up some call sequences. E.g. Previously it ws suggested to do a >> reshape immediately instead of only when the window is redisplayed. >> There might be other places that can be simplified and clarified. If >> you're busy, maybe, if you have any, you could share some initial >> thoughts about the proposed? > > The proposed code for INVOKE_WCB is (with Jason Wilkins contribution): > > #if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE) /* FIXME: also WinCE? */ > #define INVOKE_WCB(window,cbname,arg_list) \ > do \ > { \ > if( FETCH_WCB( window, cbname ) ) \ > { \ > SFG_Window *_saved_window; \ > FGCB ## cbname func = (FGCB ## cbname)(FETCH_WCB( window, cbname )); \ > _saved_window = fgStructure.CurrentWindow; \ > fgSetWindow( &window ); \ > func arg_list; \ > if (fgStructure.CurrentWindow==&(window)) \ > fgStructure.CurrentWindow = _saved_window; \ > } \ > } while( 0 ) > #else > #define INVOKE_WCB(window,cbname,arg_list) \ > do \ > { \ > if( FETCH_WCB( window, cbname ) ) \ > { \ > SFG_Window *_saved_window; \ > _saved_window = fgStructure.CurrentWindow; \ > fgSetWindow( &window ); \ > ((FGCB ## cbname)FETCH_WCB( window, cbname )) arg_list; \ > if (fgStructure.CurrentWindow==&(window)) \ > fgStructure.CurrentWindow = _saved_window; \ > } \ > } while( 0 ) > #endif > > The if condition is to allow for a change of the current window inside > the user callback with glutSetWindow. > > Below is the sample code to try with and without the proposed modification. > You can see that without the modification, the window doesn't get displayed > and the menu doesn't appear. > > > #include <GL/freeglut.h> > #include <stdio.h> > > static int sequence_number=0; > > static void Display(void) > { > int window=glutGetWindow(); > printf ("%6d Window %d Display Callback\n", > ++sequence_number, window ); > glClear ( GL_COLOR_BUFFER_BIT ); > glutSwapBuffers(); > } > static void Entry(int state) > { > int window=glutGetWindow () ; > printf ("%6d Window %d Entry Callback: %d\n", > ++sequence_number, window, state); > } > static void SampleMenu(int a) > { > printf("Menu clicked %d\n", a); > } > int main(int argc, char *argv[]) > { > glutInitWindowSize(400, 250); > glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); > glutInit(&argc, argv); > int freeglut_window=glutCreateWindow("INVOKE_WCB Issue"); > glClearColor(1.0, 1.0, 1.0, 1.0); > glutDisplayFunc(Display); > glutEntryFunc(Entry) ; > int menuID=glutCreateMenu(SampleMenu); > glutAddMenuEntry("Entry one", 1); > glutAddMenuEntry("Entry two", 2); > glutAttachMenu(GLUT_RIGHT_BUTTON); > glutMainLoop(); > return 0; > } > > All the testing has been done with 2.8.0. > If the problems have been solved with the current trunk, > forgive me for the bother. > > Regards > Ioannis > > > ---------------------------------------------------------------- > This message was sent using IMP, the Internet Messaging Program. > > > > ------------------------------------------------------------------------------ > Monitor your physical, virtual and cloud infrastructure from a single > web console. Get in-depth insight into apps, servers, databases, vmware, > SAP, cloud infrastructure, etc. Download 30-day Free Trial. > Pricing starts from $795 for 25 servers or applications! > http://p.sf.net/sfu/zoho_dev2dev_nov > _______________________________________________ > Freeglut-developer mailing list > Fre...@li... > https://lists.sourceforge.net/lists/listinfo/freeglut-developer |
From: Diederick C. N. <dc...@gm...> - 2013-04-04 03:41:44
|
Hi Ioannis, On Sun, Nov 25, 2012 at 7:06 PM, Diederick C. Niehorster <dc...@gm...> wrote: > it is true that on > windows at least, the display callback is never called after the > window is created, until you do any interaction with the window. I'm > trying to track this down, but no luck yet... This should be fixed now. Best, Dee |