mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-16 13:32:44 +00:00
fix: invoke js clearInterval on WebMediaController::stop
This commit is contained in:
@@ -10,15 +10,10 @@ WebMediaController::WebMediaController(wxWebView *webview) : m_webview(webview)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
m_webview->SetBackgroundColour(*wxBLACK);
|
m_webview->SetBackgroundColour(*wxBLACK);
|
||||||
m_webview->SetPage(
|
m_webview->SetPage("<html><head><style>html,body{margin:0;height:100%;background:#000;}</style></head><body></body></html>", "");
|
||||||
"<html><head><style>html,body{margin:0;height:100%;background:#000;}</style></head><body></body></html>",
|
|
||||||
"");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebMediaController::Load(wxURI url)
|
void WebMediaController::Load(wxURI url) { Load(url, CameraStreamMode::http); }
|
||||||
{
|
|
||||||
Load(url, CameraStreamMode::http);
|
|
||||||
}
|
|
||||||
|
|
||||||
void WebMediaController::Load(wxURI url, CameraStreamMode mode)
|
void WebMediaController::Load(wxURI url, CameraStreamMode mode)
|
||||||
{
|
{
|
||||||
@@ -37,7 +32,8 @@ void WebMediaController::Play()
|
|||||||
"img{width:100%;height:100%;object-fit:contain;display:block;}"
|
"img{width:100%;height:100%;object-fit:contain;display:block;}"
|
||||||
"</style></head><body><img id=\"camera-frame\"";
|
"</style></head><body><img id=\"camera-frame\"";
|
||||||
if (m_stream_mode == CameraStreamMode::http_snapshot) {
|
if (m_stream_mode == CameraStreamMode::http_snapshot) {
|
||||||
html += " data-camera-url=\"" + url + "\"><script>"
|
html += " data-camera-url=\"" + url +
|
||||||
|
"\"><script>"
|
||||||
"const cameraFrame=document.getElementById('camera-frame');"
|
"const cameraFrame=document.getElementById('camera-frame');"
|
||||||
"const cameraUrl=cameraFrame.dataset.cameraUrl;"
|
"const cameraUrl=cameraFrame.dataset.cameraUrl;"
|
||||||
"let cameraFrameLoading=false;"
|
"let cameraFrameLoading=false;"
|
||||||
@@ -49,8 +45,15 @@ void WebMediaController::Play()
|
|||||||
"nextFrame.onerror=function(){cameraFrameLoading=false;};"
|
"nextFrame.onerror=function(){cameraFrameLoading=false;};"
|
||||||
"nextFrame.src=cameraUrl+(cameraUrl.indexOf('?')>=0?'&':'?')+'_orca_frame='+Date.now();"
|
"nextFrame.src=cameraUrl+(cameraUrl.indexOf('?')>=0?'&':'?')+'_orca_frame='+Date.now();"
|
||||||
"}"
|
"}"
|
||||||
|
"let cameraRefreshInterval=null;"
|
||||||
|
"function stopCameraRefresh(){"
|
||||||
|
"if(cameraRefreshInterval!==null){"
|
||||||
|
"clearInterval(cameraRefreshInterval);"
|
||||||
|
"cameraRefreshInterval=null;"
|
||||||
|
"}"
|
||||||
|
"}"
|
||||||
"refreshCameraFrame();"
|
"refreshCameraFrame();"
|
||||||
"setInterval(refreshCameraFrame,200);"
|
"cameraRefreshInterval = setInterval(refreshCameraFrame,200);"
|
||||||
"</script></body></html>";
|
"</script></body></html>";
|
||||||
m_webview->SetPage(html, url);
|
m_webview->SetPage(html, url);
|
||||||
} else {
|
} else {
|
||||||
@@ -63,9 +66,11 @@ void WebMediaController::Play()
|
|||||||
|
|
||||||
void WebMediaController::Stop()
|
void WebMediaController::Stop()
|
||||||
{
|
{
|
||||||
m_url.clear();
|
if (m_webview) {
|
||||||
if (m_webview)
|
m_webview->RunScript("if(typeof stopCameraRefresh==='function') stopCameraRefresh();");
|
||||||
m_webview->Stop();
|
m_webview->Stop();
|
||||||
}
|
}
|
||||||
|
m_url.clear();
|
||||||
|
}
|
||||||
|
|
||||||
}} // namespace Slic3r::GUI
|
}} // namespace Slic3r::GUI
|
||||||
|
|||||||
Reference in New Issue
Block a user