#1010 closed bug (fixed)
Screen Preferences: screen flickers a lot when "keeping" changes made to "All workspaces"
Reported by: | jonas.kirilla | Owned by: | axeld |
---|---|---|---|
Priority: | normal | Milestone: | R1 |
Component: | Servers/app_server | Version: | R1/pre-alpha1 |
Keywords: | Cc: | wkornewald | |
Blocked By: | Blocking: | ||
Platform: | All |
Description
When "keeping" changes applied to "All Workspaces", the screen flickers needlessly. If the workspace count is 9, it flickers 8 times.
Change History (3)
comment:1 by , 18 years ago
Cc: | added |
---|---|
Component: | - Preferences/Screen → Servers/app_server |
follow-up: 3 comment:2 by , 18 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
While BeOS shows the same annoying behaviour, and this one actually depends on bug #693 (right now, as Waldemar also noticed, the workspace argument is ignored), I've changed the app_server to only apply a new screen mode if it isn't already the active one. And that accidently also fixes this bug (but not the real one) in hrev20049.
Waldemar: if you want to fix bug #693, go ahead, but I'm not sure if ignoring AS_SCREEN_SET_MODE for other workspaces is the way to go if that was your intention.
comment:3 by , 18 years ago
Replying to axeld:
Waldemar: if you want to fix bug #693, go ahead, but I'm not sure if ignoring AS_SCREEN_SET_MODE for other workspaces is the way to go if that was your intention.
It doesn't look easy and I don't want to get back into coding too much. Sorry. I'd rather fix small bugs and usability issues.
I had a quick shot and it looks like an app_server bug. In
ServerApp.cpp
the code forAS_SCREEN_SET_MODE
doesn't use the workspace argument, at all. I think that with each call toBScreen::SetMode()
the resolution is changed for all workspaces instead of only the given one.The preflet could set the screen mode for all workspaces with one single call (instead of iterating over all workspaces), but then the app_server would have to make sure that the current workspace is only updated if the mode changed. Otherwise, only the other workspaces should be updated.
I also noticed that
BScreen::SetMode(mode, makeDefault)
sets the mode for all workspaces. In R5 it seems to change the mode for the active workspace, only. The Screen preflet assumes R5 behavior, BTW. I'll fix that one if nobody objects.