?
nurf schrieb:
Ich sehe in der Doku keine explizite Angabe über "deep-copy".
Wenn du die anderen Funktionen von QPixmap bzw. QImage, steht in manchen Funktionen explizit copy, bei fromImage nur "konvert".
Das stimmt. Das steht da nicht explizit. Deswegen habe ich mich noch mal vergewissert:
Ein QImage* erstellt, ein QPixmap erstellt (fromImage).
das QImage* anschließend gelöscht, dann QPixmap.toImage() aufgerufen. War kein Problem und lieferte mir ein neues QImage aus.
Das Problem habe ich nun anders "gelöst".
void CamWidget::bttnClicked() {
if (grabber.isConnected()) {
disconnect(&grabber,SIGNAL(frameTaken(QImage*)),this, SLOT(setImage(QImage*)));
} else {
connect(&grabber,SIGNAL(frameTaken(QImage*)),this, SLOT(setImage(QImage*)));
}
grabber.openCloseCamDevice(&defaultCamDev);
}
Habe explizit connect und disconnect, je nach Verbindungszustand im Slot gesetzt. Das scheint zu helfen. Irgendwas muss also mit der Mutex-Synchronisation faul sein, die ich da gebastelt habe. Die sollte das Problem nämlich von vornherein verhindern, dass der GUI-Thread das delete initiiert, während der Grabber noch fleißig Images emittiert.