fix GLX server resize/crash when resizing windows
diff --git a/src/mesa/drivers/x11/xm_dd.c b/src/mesa/drivers/x11/xm_dd.c
index 0bafad8..d0016b8 100644
--- a/src/mesa/drivers/x11/xm_dd.c
+++ b/src/mesa/drivers/x11/xm_dd.c
@@ -1108,7 +1108,6 @@
    get_buffer_size(fb, &newWidth, &newHeight);
    if (newWidth != fb->Width || newHeight != fb->Height) {
       xmesa_resize_buffers(ctx, fb, newWidth, newHeight);
-      ctx->NewState |= _NEW_BUFFERS;  /* to update scissor / window bounds */
    }
 
    if (ctx->WinSysReadBuffer != ctx->WinSysDrawBuffer) {
diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c
index 479f762..f2993b1 100644
--- a/src/mesa/main/framebuffer.c
+++ b/src/mesa/main/framebuffer.c
@@ -224,6 +224,9 @@
 
    fb->Width = width;
    fb->Height = height;
+
+   /* to update scissor / window bounds */
+   ctx->NewState |= _NEW_BUFFERS;
 }
 
 
diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c
index 244cb485..6ade223 100644
--- a/src/mesa/main/state.c
+++ b/src/mesa/main/state.c
@@ -984,7 +984,7 @@
    if (new_state & (_NEW_BUFFERS | _NEW_COLOR | _NEW_PIXEL))
       _mesa_update_framebuffer(ctx);
 
-   if (new_state & (_NEW_SCISSOR|_NEW_BUFFERS))
+   if (new_state & (_NEW_SCISSOR | _NEW_BUFFERS | _NEW_VIEWPORT))
       _mesa_update_draw_buffer_bounds( ctx );
 
    if (new_state & _NEW_POINT)