diff --git a/src/v4l2/v4l2_camera_proxy.cpp b/src/v4l2/v4l2_camera_proxy.cpp
index ec6d265d..a0c6deea 100644
--- a/src/v4l2/v4l2_camera_proxy.cpp
+++ b/src/v4l2/v4l2_camera_proxy.cpp
@@ -426,10 +426,10 @@ int V4L2CameraProxy::vidioc_dqbuf(struct v4l2_buffer *arg)
 	    !validateMemoryType(arg->memory))
 		return -EINVAL;
 
-	if (nonBlocking_ && !vcam_->bufferSema_.tryAcquire())
-		return -EAGAIN;
-	else
+	if (!nonBlocking_)
 		vcam_->bufferSema_.acquire();
+	else if (!vcam_->bufferSema_.tryAcquire())
+		return -EAGAIN;
 
 	updateBuffers();
 
