fix GL_LINE_LOOP with drivers using own render pipeline stage (#12410, #13527)
[mesa.git] / src / mesa / drivers / dri / mga / mga_xmesa.c
index 31042f9739b88f054648b4c40fed755daad7b58f..896f2d94fc690eb677c3b093f1fac4d782536776 100644 (file)
@@ -452,7 +452,6 @@ mgaCreateContext( const __GLcontextModes *mesaVis,
    GLcontext *ctx, *shareCtx;
    mgaContextPtr mmesa;
    __DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv;
-   __DRIdrawablePrivate *dPriv = driContextPriv->driDrawablePriv;
    mgaScreenPrivate *mgaScreen = (mgaScreenPrivate *)sPriv->private;
    drm_mga_sarea_t *saPriv = (drm_mga_sarea_t *)(((char*)sPriv->pSAREA)+
                                              mgaScreen->sarea_priv_offset);
@@ -651,9 +650,6 @@ mgaCreateContext( const __GLcontextModes *mesaVis,
                                    debug_control );
 #endif
 
-   dPriv->vblFlags = (mmesa->mgaScreen->irq == 0)
-       ? VBLANK_FLAG_NO_IRQ : driGetDefaultVBlankFlags(&mmesa->optionCache);
-
    (*dri_interface->getUST)( & mmesa->swap_ust );
 
    if (driQueryOptionb(&mmesa->optionCache, "no_rast")) {
@@ -883,7 +879,13 @@ mgaMakeCurrent(__DRIcontextPrivate *driContextPriv,
       mgaContextPtr mmesa = (mgaContextPtr) driContextPriv->driverPrivate;
 
       if (mmesa->driDrawable != driDrawPriv) {
-        driDrawableInitVBlank( driDrawPriv );
+        if (driDrawPriv->swap_interval == (unsigned)-1) {
+           driDrawPriv->vblFlags = (mmesa->mgaScreen->irq == 0)
+              ? VBLANK_FLAG_NO_IRQ
+              : driGetDefaultVBlankFlags(&mmesa->optionCache);
+
+           driDrawableInitVBlank( driDrawPriv );
+        }
 
         mmesa->driDrawable = driDrawPriv;
         mmesa->dirty = ~0;