fix: start stream with graph enabled and metal doesn't show the graph
This commit is contained in:
@@ -399,12 +399,26 @@
|
|||||||
[self.imguiView.mtkView removeFromSuperview];
|
[self.imguiView.mtkView removeFromSuperview];
|
||||||
self.imguiView = nil;
|
self.imguiView = nil;
|
||||||
}
|
}
|
||||||
self.imguiView = [[ImGuiRenderer alloc] initWithFrame:self.view.bounds
|
|
||||||
streamFps:[_settings.framerate intValue]
|
// Only create ImGui view if it doesn't exist or we're not using Metal rendering
|
||||||
enableGraphs:_settings.enableGraphs
|
// (Metal rendering creates it earlier in viewDidLoad)
|
||||||
graphOpacity:[_settings.graphOpacity intValue]];
|
if (!self.imguiView || [_settings.renderingBackend intValue] != RENDER_METAL) {
|
||||||
self.imguiView.mtkView.userInteractionEnabled = NO;
|
self.imguiView = [[ImGuiRenderer alloc] initWithFrame:self.view.bounds
|
||||||
[self.view addSubview:self.imguiView.mtkView];
|
streamFps:[_settings.framerate intValue]
|
||||||
|
enableGraphs:_settings.enableGraphs
|
||||||
|
graphOpacity:[_settings.graphOpacity intValue]];
|
||||||
|
self.imguiView.mtkView.userInteractionEnabled = NO;
|
||||||
|
[self.view addSubview:self.imguiView.mtkView];
|
||||||
|
} else {
|
||||||
|
// Update settings for existing ImGui view
|
||||||
|
self.imguiView.enableGraphs = _settings.enableGraphs;
|
||||||
|
self.imguiView.graphOpacity = [_settings.graphOpacity intValue] / 100.0f;
|
||||||
|
if (_settings.enableGraphs) {
|
||||||
|
[self.imguiView start];
|
||||||
|
} else {
|
||||||
|
[self.imguiView hide];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Ensure views are layered correctly
|
// Ensure views are layered correctly
|
||||||
if (self.metalViewController && self.metalViewController.view.superview) {
|
if (self.metalViewController && self.metalViewController.view.superview) {
|
||||||
@@ -711,6 +725,16 @@
|
|||||||
[self.view addSubview:_tipLabel];
|
[self.view addSubview:_tipLabel];
|
||||||
|
|
||||||
if ([_settings.renderingBackend intValue] == RENDER_METAL) {
|
if ([_settings.renderingBackend intValue] == RENDER_METAL) {
|
||||||
|
// Create ImGui view first to get the metrics handler
|
||||||
|
if (!self.imguiView) {
|
||||||
|
self.imguiView = [[ImGuiRenderer alloc] initWithFrame:self.view.bounds
|
||||||
|
streamFps:[_settings.framerate intValue]
|
||||||
|
enableGraphs:_settings.enableGraphs
|
||||||
|
graphOpacity:[_settings.graphOpacity intValue]];
|
||||||
|
self.imguiView.mtkView.userInteractionEnabled = NO;
|
||||||
|
[self.view addSubview:self.imguiView.mtkView];
|
||||||
|
}
|
||||||
|
|
||||||
// Metal view for video
|
// Metal view for video
|
||||||
Log(LOG_I, @"StreamFrameViewController creating MetalViewController");
|
Log(LOG_I, @"StreamFrameViewController creating MetalViewController");
|
||||||
self.metalViewController = [[MetalViewController alloc] initWithFrame:self.view.bounds
|
self.metalViewController = [[MetalViewController alloc] initWithFrame:self.view.bounds
|
||||||
@@ -722,6 +746,11 @@
|
|||||||
[self.view addSubview:self.metalViewController.view];
|
[self.view addSubview:self.metalViewController.view];
|
||||||
[self.metalViewController didMoveToParentViewController:self];
|
[self.metalViewController didMoveToParentViewController:self];
|
||||||
[self.view bringSubviewToFront:self.metalViewController.view];
|
[self.view bringSubviewToFront:self.metalViewController.view];
|
||||||
|
|
||||||
|
// Ensure ImGui view is on top of Metal view for graphs to be visible
|
||||||
|
if (self.imguiView && self.imguiView.mtkView.superview) {
|
||||||
|
[self.view bringSubviewToFront:self.imguiView.mtkView];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user