Hi Campbell,

That's an interesting discovery, but the same code you can find for other cases 
in Blender, for example for the transform widgets, and probably bone drawing 
options too.

So I wonder what precisely the issue is here - does it have to do with opening 
a 2nd window?

-Ton-

------------------------------------------------------------------------
Ton Roosendaal  Blender Foundation   [email protected]    www.blender.org
Blender Institute   Entrepotdok 57A  1018AD Amsterdam   The Netherlands

On 29 Mar, 2013, at 8:14, Campbell Barton wrote:

> Revision: 55665
>          
> http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55665
> Author:   campbellbarton
> Date:     2013-03-29 07:14:18 +0000 (Fri, 29 Mar 2013)
> Log Message:
> -----------
> fix/workaround [#34346] Blender total crashes when File/User preferences 
> twice and go to System tab
> 
> Modified Paths:
> --------------
>    trunk/blender/source/blender/editors/interface/interface_draw.c
> 
> Modified: trunk/blender/source/blender/editors/interface/interface_draw.c
> ===================================================================
> --- trunk/blender/source/blender/editors/interface/interface_draw.c   
> 2013-03-29 06:25:22 UTC (rev 55664)
> +++ trunk/blender/source/blender/editors/interface/interface_draw.c   
> 2013-03-29 07:14:18 UTC (rev 55665)
> @@ -61,6 +61,15 @@
> /* own include */
> #include "interface_intern.h"
> 
> +/* only for bug workaround [#34346] */
> +#if !defined(WIN32) && !defined(__APPLE__)
> +#  define GPU_OSS_BUG_WOKAROUND
> +#endif
> +
> +#ifdef GPU_OSS_BUG_WOKAROUND
> +#  include "GPU_extensions.h"
> +#endif
> +
> static int roundboxtype = UI_CNR_ALL;
> 
> void uiSetRoundBox(int type)
> @@ -1236,6 +1245,7 @@
> 
> void ui_draw_but_NORMAL(uiBut *but, uiWidgetColors *wcol, rcti *rect)
> {
> +     static int use_displist = -1;
>       static GLuint displist = 0;
>       int a, old[8];
>       GLfloat diff[4], diffn[4] = {1.0f, 1.0f, 1.0f, 1.0f};
> @@ -1285,20 +1295,30 @@
>       
>       glScalef(size, size, size);
>       
> -     if (displist == 0) {
> -             GLUquadricObj   *qobj;
> +#ifdef GPU_OSS_BUG_WOKAROUND
> +     if (use_displist == -1) {
> +             use_displist = !GPU_type_matches(GPU_DEVICE_ANY, GPU_OS_UNIX, 
> GPU_DRIVER_OPENSOURCE);
> +     }
> +#endif
> +
> +     if (displist == 0 || use_displist == 0) {
> +             GLUquadricObj *qobj;
> +
> +             if (use_displist) {
> +                     displist = glGenLists(1);
> +                     glNewList(displist, GL_COMPILE_AND_EXECUTE);
> +             }
>               
> -             displist = glGenLists(1);
> -             glNewList(displist, GL_COMPILE_AND_EXECUTE);
> -             
>               qobj = gluNewQuadric();
> -             gluQuadricDrawStyle(qobj, GLU_FILL); 
> +             gluQuadricDrawStyle(qobj, GLU_FILL);
>               glShadeModel(GL_SMOOTH);
>               gluSphere(qobj, 100.0, 32, 24);
>               glShadeModel(GL_FLAT);
>               gluDeleteQuadric(qobj);  
>               
> -             glEndList();
> +             if (use_displist) {
> +                     glEndList();
> +             }
>       }
>       else {
>               glCallList(displist);
> 
> _______________________________________________
> Bf-blender-cvs mailing list
> [email protected]
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs

_______________________________________________
Bf-committers mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-committers

Reply via email to