diff --git a/src/libcamera/bound_method.cpp b/src/libcamera/bound_method.cpp
index 4c0cd415a3f1..45c765774801 100644
--- a/src/libcamera/bound_method.cpp
+++ b/src/libcamera/bound_method.cpp
@@ -62,6 +62,8 @@ void BoundMethodBase::activatePack(void *pack, bool deleteMethod)
 	case ConnectionTypeDirect:
 	default:
 		invokePack(pack);
+		if (deleteMethod)
+			delete this;
 		break;
 
 	case ConnectionTypeQueued: {
