Home » Community » Coffee corner » U++ bug (freezed screen) related to Dual Display
U++ bug (freezed screen) related to Dual Display [message #60552] |
Sun, 28 April 2024 04:57 ![Go to next message Go to next message](theme/default/images/down.png) |
Lance
Messages: 542 Registered: March 2007
|
Contributor |
|
|
Sorry but I cannot find a proper category/topic to put it.
It has been bothering me for quite a while. Today I did a test with theide, the same problem happened.
Environment: Ubuntu Linux 22.04.04 LTS
Settings: Dual display with "Join Displays", i.e., as if two displays butt each other side by side.
Trigering: I don't know exactly. But just open theide with some package. Then go to do something else, like web browsing and completely forget about theide. After a while of like a few minutes, go back to theide, test if it happened. If not, go do something else and come back to test it again. And yes, it will happen.
Observation: The menu responds; resizing window, moving window all function properly. But the window fails to update itself.
See attached video for an idea.
BR,
Lance
[Updated on: Sun, 28 April 2024 05:03] Report message to a moderator
|
|
|
|
|
|
|
|
|
|
|
Re: U++ bug (freezed screen) related to Dual Display [message #60619 is a reply to message #60616] |
Tue, 04 June 2024 14:51 ![Go to previous message Go to previous message](theme/default/images/up.png) ![Go to next message Go to next message](theme/default/images/down.png) |
Lance
Messages: 542 Registered: March 2007
|
Contributor |
|
|
Today after I restored my computer from suspension, both my applicaiton and theide w/bluebar are functional. My application has survived like 10 suspension/resume and lasted 3-4 days with dual monitors, never as persistent before. Then I played around, moving theide w/bluebar between monitors, etc. It remains fine, but my application suddenly failed. theide it runs from remains functional.
Update June 5 10:49EST: both theidew/BlueBar and my application survived multiple suspensions/restorations without issues. It's significantly stabler than it used to be(before my recent update to upp ver 17135).
[Updated on: Wed, 05 June 2024 16:52] Report message to a moderator
|
|
|
Re: U++ bug (freezed screen) related to Dual Display [message #60621 is a reply to message #60619] |
Sun, 09 June 2024 01:52 ![Go to previous message Go to previous message](theme/default/images/up.png) ![Go to next message Go to next message](theme/default/images/down.png) |
Lance
Messages: 542 Registered: March 2007
|
Contributor |
|
|
I likely find a definite way to lead to a dual-monitor bug.
Get the second monitor ready, but don't actually plug it in yet. Make sure the dual display setting is set to join displays though.
1. Open theide, open an main package that will enable ScrollBar in the code editor, e.g., BlueBar.
2. Plug in the second monitor (e.g., through HDMI), wait until the second monitor is up;
3. Go back the theide with BlueBar, try to play with the ScrollBar on the code editor, say, click on upper, click on bottom, dragging, click on upper and hold, click on bottom and hold. One will observe the ScrollBar no longer functions normally.
PS: restarted my computer and confirmed the above procedure will break the ScrollBar. Not sure if it's the root cause of my problem but may well be related.
[Updated on: Sun, 09 June 2024 02:00] Report message to a moderator
|
|
|
Re: U++ bug (freezed screen) related to Dual Display [message #60636 is a reply to message #60621] |
Sun, 16 June 2024 19:39 ![Go to previous message Go to previous message](theme/default/images/up.png) ![Go to next message Go to next message](theme/default/images/down.png) |
![](https://www.ultimatepp.org/forums/images/custom_avatars/3.png) |
mirek
Messages: 14000 Registered: November 2005
|
Ultimate Member |
|
|
Well, adding / removing monitor while app is running leads me here:
CtrlCore/GtkWnd.cpp:221
Rect Ctrl::GetVirtualWorkArea()
{
GuiLock __;
static Rect r;
if(r.right == 0) {
r = GetPrimaryWorkArea();
Array<Rect> rc;
GetWorkArea(rc);
for(int i = 0; i < rc.GetCount(); i++)
r |= rc[i];
}
return r;
}
Rect Ctrl::GetVirtualScreenArea()
{
GuiLock __;
static Rect r;
if(r.right == 0) {
gint x, y, width, height;
gdk_window_get_geometry(gdk_screen_get_root_window(gdk_screen_get_default()),
&x, &y, &width, &height);
r = SCL(x, y, width, height);
}
return r;
}
- we only load geometry once
pls try to replace it with
Rect Ctrl::GetVirtualWorkArea()
{
GuiLock __;
Rect r;
r = GetPrimaryWorkArea();
Array<Rect> rc;
GetWorkArea(rc);
for(int i = 0; i < rc.GetCount(); i++)
r |= rc[i];
return r;
}
Rect Ctrl::GetVirtualScreenArea()
{
GuiLock __;
Rect r;
gint x, y, width, height;
gdk_window_get_geometry(gdk_screen_get_root_window(gdk_screen_get_default()),
&x, &y, &width, &height);
r = SCL(x, y, width, height);
return r;
}
|
|
|
|
|
Goto Forum:
Current Time: Sat Jul 27 06:50:46 CEST 2024
Total time taken to generate the page: 0.02596 seconds
|