diff --git a/libavdevice/xcbgrab.c b/libavdevice/xcbgrab.c
index 243ece4b1d0f829e1e51faa837ade6ab4f84c6c8..161bd03281709513b673aad252adb078d7a625a4 100644
--- a/libavdevice/xcbgrab.c
+++ b/libavdevice/xcbgrab.c
@@ -99,12 +99,16 @@ static int xcbgrab_reposition(AVFormatContext *s,
                               xcb_get_geometry_reply_t *geo)
 {
     XCBGrabContext *c = s->priv_data;
-    int x = c->x, y = c->y, p_x = p->win_x, p_y = p->win_y;
+    int x = c->x, y = c->y;
     int w = c->width, h = c->height, f = c->follow_mouse;
+    int p_x, p_y;
 
     if (!p || !geo)
         return AVERROR(EIO);
 
+    p_x = p->win_x;
+    p_y = p->win_y;
+
     if (f == FOLLOW_CENTER) {
         x = p_x - w / 2;
         y = p_y - h / 2;