diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp
index 7f1e11e8..11de57d6 100644
--- a/src/libcamera/request.cpp
+++ b/src/libcamera/request.cpp
@@ -491,7 +491,9 @@ int Request::addBuffer(const Stream *stream, FrameBuffer *buffer,
 	}
 
 	buffer->_d()->setRequest(this);
-	_d()->pending_.insert(buffer);
+	/* Don't want to wait for input buffers as they don't "complete". */
+	if (!stream->configuration().isInput())
+		_d()->pending_.insert(buffer);
 
 	if (fence && fence->isValid())
 		buffer->_d()->setFence(std::move(fence));
