diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
index 6a6be5c820..efe06c6807 100644
--- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
+++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
@@ -786,8 +786,6 @@ int PipelineHandlerBase::queueRequestDevice(Camera *camera, Request *request)
 			return ret;
 	}
 
-	/* Push the request to the back of the queue. */
-	data->requestQueue_.push(request);
 	data->handleState();
 
 	return 0;
@@ -1241,7 +1239,7 @@ void CameraData::metadataReady(const ControlList &metadata)
 
 	/* Add to the Request metadata buffer what the IPA has provided. */
 	/* Last thing to do is to fill up the request metadata. */
-	Request *request = requestQueue_.front();
+	Request *request = queuedRequests_.front();
 	request->_d()->metadata().merge(metadata);
 
 	/*
@@ -1400,10 +1398,8 @@ void CameraData::clearIncompleteRequests()
 	 * All outstanding requests (and associated buffers) must be returned
 	 * back to the application.
 	 */
-	while (!requestQueue_.empty()) {
-		pipe()->cancelRequest(requestQueue_.front());
-		requestQueue_.pop();
-	}
+	while (!queuedRequests_.empty())
+		pipe()->cancelRequest(queuedRequests_.front());
 }
 
 void CameraData::handleStreamBuffer(FrameBuffer *buffer, RPi::Stream *stream)
@@ -1413,7 +1409,7 @@ void CameraData::handleStreamBuffer(FrameBuffer *buffer, RPi::Stream *stream)
 	 * that we actually have one to action, otherwise we just return
 	 * buffer back to the stream.
 	 */
-	Request *request = requestQueue_.empty() ? nullptr : requestQueue_.front();
+	Request *request = queuedRequests_.empty() ? nullptr : queuedRequests_.front();
 	if (request && request->findBuffer(stream) == buffer) {
 		FrameMetadata &md = buffer->_d()->metadata();
 
@@ -1468,7 +1464,7 @@ void CameraData::handleState()
 
 void CameraData::checkRequestCompleted()
 {
-	Request *request = requestQueue_.front();
+	Request *request = queuedRequests_.front();
 	if (request->hasPendingBuffers())
 		return;
 
@@ -1480,7 +1476,6 @@ void CameraData::checkRequestCompleted()
 			<< request->sequence();
 
 	pipe()->completeRequest(request);
-	requestQueue_.pop();
 
 	LOG(RPI, Debug) << "Going into Idle state";
 	state_ = State::Idle;
@@ -1536,7 +1531,7 @@ void CameraData::handleControlLists(uint32_t delayContext, ControlList &paramCon
 	 * in the metadata, being the sequence number of the request whose ControlList
 	 * has just been applied.
 	 */
-	Request *request = requestQueue_.front();
+	Request *request = queuedRequests_.front();
 	request->_d()->metadata().set(controls::rpi::ControlListSequence, delayContext);
 
 	/*
diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.h b/src/libcamera/pipeline/rpi/common/pipeline_base.h
index 758155ee0d..4a8a769fd8 100644
--- a/src/libcamera/pipeline/rpi/common/pipeline_base.h
+++ b/src/libcamera/pipeline/rpi/common/pipeline_base.h
@@ -129,8 +129,6 @@ public:
 		return state_ != State::Stopped && state_ != State::Error;
 	}
 
-	std::queue<Request *> requestQueue_;
-
 	/* For handling digital zoom. */
 	IPACameraSensorInfo sensorInfo_;
 
diff --git a/src/libcamera/pipeline/rpi/pisp/pisp.cpp b/src/libcamera/pipeline/rpi/pisp/pisp.cpp
index b744c901f7..ef34be8338 100644
--- a/src/libcamera/pipeline/rpi/pisp/pisp.cpp
+++ b/src/libcamera/pipeline/rpi/pisp/pisp.cpp
@@ -2308,13 +2308,13 @@ void PiSPCameraData::prepareBe(uint32_t bufferId, bool stitchSwapBuffers)
 void PiSPCameraData::tryRunPipeline()
 {
 	/* If any of our request or buffer queues are empty, we cannot proceed. */
-	if (state_ != State::Idle || requestQueue_.empty() || !cfeJobComplete())
+	if (state_ != State::Idle || queuedRequests_.empty() || !cfeJobComplete())
 		return;
 
 	CfeJob &job = cfeJobQueue_.front();
 
 	/* Take the first request from the queue and action the IPA. */
-	Request *request = requestQueue_.front();
+	Request *request = queuedRequests_.front();
 	ASSERT(request->metadata().empty());
 
 	/* See if a new ScalerCrop value needs to be applied. */
@@ -2335,7 +2335,7 @@ void PiSPCameraData::tryRunPipeline()
 	params.buffers.bayer = RPi::MaskBayerData | bayerId;
 	params.buffers.stats = RPi::MaskStats | statsId;
 	params.buffers.embedded = 0;
-	params.ipaContext = requestQueue_.front()->sequence();
+	params.ipaContext = request->sequence();
 	params.delayContext = job.delayContext;
 	params.sensorControls = std::move(job.sensorControls);
 	/* params.requestControls is set by handleControlLists. */
diff --git a/src/libcamera/pipeline/rpi/vc4/vc4.cpp b/src/libcamera/pipeline/rpi/vc4/vc4.cpp
index 3e9a490589..4c159527be 100644
--- a/src/libcamera/pipeline/rpi/vc4/vc4.cpp
+++ b/src/libcamera/pipeline/rpi/vc4/vc4.cpp
@@ -839,7 +839,7 @@ void Vc4CameraData::ispOutputDequeue(FrameBuffer *buffer)
 	if (stream == &isp_[Isp::Stats]) {
 		ipa::RPi::ProcessParams params;
 		params.buffers.stats = index | RPi::MaskStats;
-		params.ipaContext = requestQueue_.front()->sequence();
+		params.ipaContext = queuedRequests_.front()->sequence();
 		ipa_->processStats(params);
 	} else {
 		/* Any other ISP output can be handed back to the application now. */
@@ -923,7 +923,7 @@ void Vc4CameraData::tryRunPipeline()
 	BayerFrame bayerFrame;
 
 	/* If any of our request or buffer queues are empty, we cannot proceed. */
-	if (state_ != State::Idle || requestQueue_.empty() ||
+	if (state_ != State::Idle || queuedRequests_.empty() ||
 	    bayerQueue_.empty() || (embeddedQueue_.empty() && sensorMetadata_))
 		return;
 
@@ -931,7 +931,7 @@ void Vc4CameraData::tryRunPipeline()
 		return;
 
 	/* Take the first request from the queue and action the IPA. */
-	Request *request = requestQueue_.front();
+	Request *request = queuedRequests_.front();
 	ASSERT(request->metadata().empty());
 
 	/* See if a new ScalerCrop value needs to be applied. */
