Merge pull request #17030 from Ultimaker/CURA-11180-mac-memory-leak

Fix memory leak issues in monitor page
This commit is contained in:
Remco Burema 2023-10-19 14:01:09 +02:00 committed by GitHub
commit 95fa0855a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 15 deletions

View File

@ -1,6 +1,8 @@
# Copyright (c) 2018 Aldo Hoeben / fieldOfView # Copyright (c) 2018 Aldo Hoeben / fieldOfView
# NetworkMJPGImage is released under the terms of the LGPLv3 or higher. # NetworkMJPGImage is released under the terms of the LGPLv3 or higher.
from typing import Optional
from PyQt6.QtCore import QUrl, pyqtProperty, pyqtSignal, pyqtSlot, QRect, QByteArray from PyQt6.QtCore import QUrl, pyqtProperty, pyqtSignal, pyqtSlot, QRect, QByteArray
from PyQt6.QtGui import QImage, QPainter from PyQt6.QtGui import QImage, QPainter
from PyQt6.QtQuick import QQuickPaintedItem from PyQt6.QtQuick import QQuickPaintedItem
@ -19,9 +21,9 @@ class NetworkMJPGImage(QQuickPaintedItem):
self._stream_buffer = QByteArray() self._stream_buffer = QByteArray()
self._stream_buffer_start_index = -1 self._stream_buffer_start_index = -1
self._network_manager = None # type: QNetworkAccessManager self._network_manager: Optional[QNetworkAccessManager] = None
self._image_request = None # type: QNetworkRequest self._image_request: Optional[QNetworkRequest] = None
self._image_reply = None # type: QNetworkReply self._image_reply: Optional[QNetworkReply] = None
self._image = QImage() self._image = QImage()
self._image_rect = QRect() self._image_rect = QRect()

View File

@ -1,4 +1,4 @@
// Copyright (c) 2019 Ultimaker B.V. // Copyright (c) 2023 UltiMaker
// Cura is released under the terms of the LGPLv3 or higher. // Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.2 import QtQuick 2.2
@ -6,7 +6,7 @@ import UM 1.3 as UM
import Cura 1.0 as Cura import Cura 1.0 as Cura
Item { Item {
property var cameraUrl: ""; property string cameraUrl: "";
Rectangle { Rectangle {
anchors.fill:parent; anchors.fill:parent;
@ -34,22 +34,29 @@ Item {
Cura.NetworkMJPGImage { Cura.NetworkMJPGImage {
id: cameraImage id: cameraImage
anchors.horizontalCenter: parent.horizontalCenter; anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter; anchors.verticalCenter: parent.verticalCenter
height: Math.round((imageHeight === 0 ? 600 * screenScaleFactor : imageHeight) * width / imageWidth);
readonly property real img_scale_factor: {
if (imageWidth > maximumWidth || imageHeight > maximumHeight) {
return Math.min(maximumWidth / imageWidth, maximumHeight / imageHeight);
}
return 1.0;
}
width: imageWidth === 0 ? 800 * screenScaleFactor : imageWidth * img_scale_factor
height: imageHeight === 0 ? 600 * screenScaleFactor : imageHeight * img_scale_factor
onVisibleChanged: { onVisibleChanged: {
if (cameraUrl === "") return;
if (visible) { if (visible) {
if (cameraUrl != "") { start();
start();
}
} else { } else {
if (cameraUrl != "") { stop();
stop();
}
} }
} }
source: cameraUrl source: cameraUrl
width: Math.min(imageWidth === 0 ? 800 * screenScaleFactor : imageWidth, maximumWidth);
z: 1 z: 1
} }