[7.7.1] Screen color depth change corrupts scrollbars

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

[7.7.1] Screen color depth change corrupts scrollbars

Steven Kelly
How does a Depth32Image come to have its bits in a 16-bit image format?
The images in question are in an ImageCache for Windows scrollbars, and
the problem occurs when I've accessed my work PC with Remote Desktop
Connection, which drops the screen depth from 32 to 16 bits. Fairly
commonly, one or more of the scrollbars show up corrupted when I use the
PC directly at work the next day (no reboot or logout).

The screenshot shows the corruption in the launcher scrollbar, an
inspector on the entry for that size scrollbar in the ImageCache, and
the result of the code in the evaluation pane, which creates a 16-bit
image using the bits from this 32-bit image.

Does anyone else see scrollbar corruption like this, or have any idea
how it could happen? Maybe because the platformScreenDepthChanged: is
processed at priority 90, so can interrupt the creation of a new
scrollbar image that is at priority 50?

Cheers,
Steve

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc

ImageCache.jpg (85K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [7.7.1] Screen color depth change corrupts scrollbars

Mark Pirogovsky-3
Hello All,
I do see it all the time. It is not only Scroll bars, but many other
places like the tree views. This started happening I believe in VW 7.6.

As soon as I see it i run the following in the work space:


CachedImage flushCaches.
Icon flushCaches.
WindowManager purgeDeadWindows.
WindowManager restoreAll.

--Mark

Steven Kelly wrote:

> How does a Depth32Image come to have its bits in a 16-bit image format?
> The images in question are in an ImageCache for Windows scrollbars, and
> the problem occurs when I've accessed my work PC with Remote Desktop
> Connection, which drops the screen depth from 32 to 16 bits. Fairly
> commonly, one or more of the scrollbars show up corrupted when I use the
> PC directly at work the next day (no reboot or logout).
>
> The screenshot shows the corruption in the launcher scrollbar, an
> inspector on the entry for that size scrollbar in the ImageCache, and
> the result of the code in the evaluation pane, which creates a 16-bit
> image using the bits from this 32-bit image.
>
> Does anyone else see scrollbar corruption like this, or have any idea
> how it could happen? Maybe because the platformScreenDepthChanged: is
> processed at priority 90, so can interrupt the creation of a new
> scrollbar image that is at priority 50?
>
> Cheers,
> Steve
>
>
> _______________________________________________
> vwnc mailing list
> [hidden email]
> http://lists.cs.uiuc.edu/mailman/listinfo/vwnc

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: [7.7.1] Screen color depth change corrupts scrollbars

Steven Kelly
Thanks Mark. CachedImage and Icon flushCaches get rid of Pixmaps from
the old bit depth. That was automated in 7.7 in processUnknownEvent:for:
/ updatePlatformDepthTo: - earlier they just updated the screen bounds
but not the bit-depth. While that solved the earlier problems with
out-of-date Pixmaps, maybe the fact that it made the change at priority
90 also simultaneously broke the previously-working code in ImageCache
users?

The problem we see now isn't an out-of-date Pixmap, but a corrupt Image:
bits instance variable is for 16-bit depth, but class and other instvars
are for 32-bit.

Steve

Mark Pirogovsky [mailto:[hidden email]] wrote 25 January 2012
15:23
> I do see it all the time. It is not only Scroll bars, but many other
> places like the tree views. This started happening I believe in VW
7.6.

>
> As soon as I see it i run the following in the work space:
>
>
> CachedImage flushCaches.
> Icon flushCaches.
> WindowManager purgeDeadWindows.
> WindowManager restoreAll.
>
> Steven Kelly wrote:
> > How does a Depth32Image come to have its bits in a 16-bit image
> > format? The images in question are in an ImageCache for Windows
> > scrollbars, and the problem occurs when I've accessed my work PC
> > with Remote Desktop Connection, which drops the screen depth
> > from 32 to 16 bits. Fairly commonly, one or more of the
> > scrollbars show up corrupted when I use the
> > PC directly at work the next day (no reboot or logout).
> >
> > The screenshot shows the corruption in the launcher scrollbar, an
> > inspector on the entry for that size scrollbar in the ImageCache,
> > and the result of the code in the evaluation pane, which creates a
> > 16-bit image using the bits from this 32-bit image.
> >
> > Does anyone else see scrollbar corruption like this, or have any
> > idea how it could happen? Maybe because the
platformScreenDepthChanged:
> > is processed at priority 90, so can interrupt the creation of a new
> > scrollbar image that is at priority 50?
> >
> > Cheers,
> > Steve

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: [7.7.1] Screen color depth change corrupts scrollbars

Mark Plas
We often get "a primitive has failed" when using Remote Desktop Connection, after we try to start an image that has been saved on a PC with 24 bit colors. It has something to do with AlphaCompositedImage.

I haven't looked at why it crashes (we learned to live with it). Perhaps this problem is related to yours?

There's a stack trace below:

a primitive has failed
ApplicationWindow(Object)>>error:
ApplicationWindow(Object)>>primitiveFailed
ApplicationWindow(Window)>>deviceContentsOfAreaOriginX:y:width:height:into:startingAt:
ApplicationWindow(DisplaySurface)>>contentsOfArea:into:startingAt:
optimized [] in AlphaCompositedImage>>fetchCompositionTarget:
BlockClosure>>cull:
Depth16Image(Object)>>ifNil:ifNotNil:
AlphaCompositedImage>>fetchCompositionTarget:
AlphaCompositedImage>>displayOn:
AlphaCompositedImage(VisualComponent)>>displayOn:at:
AlphaCompositedImage(VisualComponent)>>displayOn:at:enabled:
Win98ToolbarButtonView(Win95ActionButtonView)>>displayLabelOn:offset:
Win98ToolbarButtonView>>displayLabelOn:offset:
optimized [] in Win98ToolbarButtonView>>displayOn:
BlockClosure>>cull:
AlphaCompositedImage(Object)>>ifNotNil:
Win98ToolbarButtonView>>displayOn:
BoundedWrapper>>displayOn:
SpecWrapper(Wrapper)>>displayOn:
SpecWrapper(WidgetWrapper)>>displayOn:
Win98ToolBar(CompositePart)>>displayOn:
Win98ToolBar(ToolBar)>>displayOn:
BoundedWrapper>>displayOn:
ReComposingComposite(CompositePart)>>displayOn:
WindowDisplayPolicy>>displayDamageList:in:
ApplicationWindow(ScheduledWindow)>>displayDamageEvent:
ApplicationWindow(Window)>>displayPendingInvalidation
optimized [] in VisualPart>>repairDamage
BlockClosure>>cull:
ApplicationWindow(Object)>>ifNotNil:
ReComposingComposite(VisualPart)>>repairDamage
optimized [] in ScheduledWindow>>extentEvent:
BlockClosure>>cull:
ReComposingComposite(Object)>>ifNotNil:
ApplicationWindow(ScheduledWindow)>>extentEvent:
ApplicationWindow(ScheduledWindow)>>refresh
ApplicationWindow(ScheduledWindow)>>newGraphicsDevice:
ApplicationWindow>>newGraphicsDevice:
optimized [] in Screen>>updateWidgetPolicy
optimized [] in Screen>>allScheduledWindowsDo:
OrderedCollection>>do:
Screen>>allScheduledWindowsDo:
Screen>>updateWidgetPolicy
Screen class>>install
WindowingSystem>>setUp
WindowingSystem(Subsystem)>>runActivationActions
WindowingSystem(Subsystem)>>privateActivate
WindowingSystem class(Subsystem class)>>activate
optimized [] in Subsystem>>ensurePrerequisitesAreActive
Set>>do:
FinalizationSystem(Subsystem)>>ensurePrerequisitesAreActive
FinalizationSystem(Subsystem)>>privateActivate
FinalizationSystem class(Subsystem class)>>activate
optimized [] in Subsystem>>ensurePrerequisitesAreActive
Set>>do:
DevelopmentSystem(Subsystem)>>ensurePrerequisitesAreActive
DevelopmentSystem(Subsystem)>>privateActivate
DevelopmentSystem class(Subsystem class)>>activate
optimized [] in Subsystem>>ensurePrerequisitesAreActive
Set>>do:
InterestNotificationSystem(Subsystem)>>ensurePrerequisitesAreActive
InterestNotificationSystem(Subsystem)>>privateActivate
InterestNotificationSystem class(Subsystem class)>>activate
optimized [] in Subsystem>>ensurePrerequisitesAreActive
Set>>do:
ImageConfigurationSystem(Subsystem)>>ensurePrerequisitesAreActive
ImageConfigurationSystem(Subsystem)>>privateActivate
ImageConfigurationSystem class(Subsystem class)>>activate
optimized [] in Subsystem>>ensurePrerequisitesAreActive
Set>>do:
RuntimeSystem(Subsystem)>>ensurePrerequisitesAreActive
RuntimeSystem(Subsystem)>>privateActivate
RuntimeSystem class(Subsystem class)>>activate
RuntimeSystem class(Subsystem class)>>reactToEvent:
optimized [] in Subsystem class>>signalEvent:to:
Set>>do:
Subsystem class>>signalEvent:to:
Subsystem class>>signalEvent:
Snapshot>>signalSystemEvent:
Snapshot>>postSnapshotBootstrap
Snapshot>>privateSnapshot
optimized [] in [] in Snapshot>>snapshot
BlockClosure>>ensure:
Cursor>>showWhile:
optimized [] in Snapshot>>snapshot
BlockClosure>>ensure:
Snapshot class>>withSnapshot:do:
Snapshot>>snapshot
Snapshot>>saveAs:thenQuit:
ObjectMemory class>>snapshotAs:thenQuit:
ObjectMemory class>>snapshotThenQuit
ObjectMemory class>>quitDialog
VisualLauncher>>visualWorksExit
WinXPMenuBarButtonController(MenuBarButtonController)>>dispatchMenuSymbol:
WinXPMenuBarButtonController(MenuBarButtonController)>>dispatchMenuSelection:
optimized [] in Win95MenuBarButtonController>>menuBarActionForMenu:
BlockClosure>>ensure:
WinXPMenuBarButtonController(Win95MenuBarButtonController)>>menuBarActionForMenu:
WinXPMenuBarButtonController(MenuBarButtonController)>>menuBarAction
WinXPMenuBarButtonController(MenuBarButtonController)>>redButtonPressedEvent:
RedButtonPressedEvent>>dispatchTo:
WinXPMenuBarButtonController(Controller)>>handleEvent:
EventDispatcher>>dispatch:to:
EventDispatcher>>dispatchEvent:
RedButtonPressedEvent(Event)>>dispatch
optimized [] in Event>>dispatchForWindowManager:
UndefinedObject>>ifNotNil:ifNil:
ApplicationStandardSystemController>>inTransactionDo:
ApplicationStandardSystemController>>executeInContextWithoutUpdateWidgets:
ApplicationStandardSystemController>>executeInContext:
ApplicationStandardSystemController>>eventExecuteInContext:
RedButtonPressedEvent(Event)>>executeInWindowContext:
RedButtonPressedEvent(Event)>>dispatchForWindowManager:
optimized [] in [] in WindowManager>>safelyDispatchForWindowManager:
BlockClosure>>ensure:
optimized [] in WindowManager>>safelyDispatchForWindowManager:
BlockClosure>>on:do:
WindowManager>>safelyDispatchForWindowManager:
WindowManager>>processNextEvent
optimized [] in [] in WindowManager>>unboundMethod
BlockClosure>>on:do:
optimized [] in WindowManager>>unboundMethod
BlockClosure>>on:do:
optimized [] in Process class>>unboundMethodwith:with:...


-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of Steven Kelly
Sent: woensdag 25 januari 2012 14:51
To: VWNC NC
Subject: Re: [vwnc] [7.7.1] Screen color depth change corrupts scrollbars

Thanks Mark. CachedImage and Icon flushCaches get rid of Pixmaps from the old bit depth. That was automated in 7.7 in processUnknownEvent:for:
/ updatePlatformDepthTo: - earlier they just updated the screen bounds but not the bit-depth. While that solved the earlier problems with out-of-date Pixmaps, maybe the fact that it made the change at priority
90 also simultaneously broke the previously-working code in ImageCache users?

The problem we see now isn't an out-of-date Pixmap, but a corrupt Image:
bits instance variable is for 16-bit depth, but class and other instvars are for 32-bit.

Steve

Mark Pirogovsky [mailto:[hidden email]] wrote 25 January 2012
15:23
> I do see it all the time. It is not only Scroll bars, but many other
> places like the tree views. This started happening I believe in VW
7.6.

>
> As soon as I see it i run the following in the work space:
>
>
> CachedImage flushCaches.
> Icon flushCaches.
> WindowManager purgeDeadWindows.
> WindowManager restoreAll.
>
> Steven Kelly wrote:
> > How does a Depth32Image come to have its bits in a 16-bit image
> > format? The images in question are in an ImageCache for Windows
> > scrollbars, and the problem occurs when I've accessed my work PC
> > with Remote Desktop Connection, which drops the screen depth from 32
> > to 16 bits. Fairly commonly, one or more of the scrollbars show up
> > corrupted when I use the PC directly at work the next day (no reboot
> > or logout).
> >
> > The screenshot shows the corruption in the launcher scrollbar, an
> > inspector on the entry for that size scrollbar in the ImageCache,
> > and the result of the code in the evaluation pane, which creates a
> > 16-bit image using the bits from this 32-bit image.
> >
> > Does anyone else see scrollbar corruption like this, or have any
> > idea how it could happen? Maybe because the
platformScreenDepthChanged:
> > is processed at priority 90, so can interrupt the creation of a new
> > scrollbar image that is at priority 50?
> >
> > Cheers,
> > Steve

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: [7.7.1] Screen color depth change corrupts scrollbars

Steven Kelly
Thanks Mark (Plas). Your symptom may be related to mine, if the
underlying problem is indeed the priority 90 changing of Screen depth
halfway through a priority 50 Pixmap <-> Image operation. 7.7.1
corrected a problem in AlphaCompositedImage>>fetchCompositionTarget:, if
the medium bounds changed during the composition. But a change in the
medium depth will cause problems that the current code can't handle.

The fetchCompositionTarget: code shows the problem very clearly:
- at the start it checks that its composition image is the same bit
depth as the screen
- later it bitblts the medium contents into the composition image bits
If the depth changes between those two commands, there will either be a
primitive fail (if the second command's primitive does its own sanity
check, as Mark's error indicates), or the contents of the bits instvar
would be corrupted (as happens in my case during "pixmap asImage" for
scrollbars). Which of these occurs may be dependent on whether we are
changing from 16 to 32-bit or vice versa: in one case the data from the
new 32-bit Pixmap won't fit in the 16-bit Image's bits instvar, so we
get a primitiveFailed; in the other there's room in the bits instvar, so
we get visible corruption and zeroes at the end.

Steve

> -----Original Message-----
> From: Mark Plas [mailto:[hidden email]]
> Sent: 25 January 2012 16:22
> To: Steven Kelly; VWNC NC
> Subject: RE: [vwnc] [7.7.1] Screen color depth change corrupts
> scrollbars
>
> We often get "a primitive has failed" when using Remote Desktop
> Connection, after we try to start an image that has been saved on a PC
> with 24 bit colors. It has something to do with AlphaCompositedImage.
>
> I haven't looked at why it crashes (we learned to live with it).
> Perhaps this problem is related to yours?
>
> There's a stack trace below:
>
> a primitive has failed
> ApplicationWindow(Object)>>error:
> ApplicationWindow(Object)>>primitiveFailed
>
ApplicationWindow(Window)>>deviceContentsOfAreaOriginX:y:width:height:i

> nto:startingAt:
> ApplicationWindow(DisplaySurface)>>contentsOfArea:into:startingAt:
> optimized [] in AlphaCompositedImage>>fetchCompositionTarget:
> BlockClosure>>cull:
> Depth16Image(Object)>>ifNil:ifNotNil:
> AlphaCompositedImage>>fetchCompositionTarget:
> AlphaCompositedImage>>displayOn:
> AlphaCompositedImage(VisualComponent)>>displayOn:at:
> AlphaCompositedImage(VisualComponent)>>displayOn:at:enabled:
> Win98ToolbarButtonView(Win95ActionButtonView)>>displayLabelOn:offset:
> Win98ToolbarButtonView>>displayLabelOn:offset:
> optimized [] in Win98ToolbarButtonView>>displayOn:
> BlockClosure>>cull:
> AlphaCompositedImage(Object)>>ifNotNil:
> Win98ToolbarButtonView>>displayOn:
> BoundedWrapper>>displayOn:
> SpecWrapper(Wrapper)>>displayOn:
> SpecWrapper(WidgetWrapper)>>displayOn:
> Win98ToolBar(CompositePart)>>displayOn:
> Win98ToolBar(ToolBar)>>displayOn:
> BoundedWrapper>>displayOn:
> ReComposingComposite(CompositePart)>>displayOn:
> WindowDisplayPolicy>>displayDamageList:in:
> ApplicationWindow(ScheduledWindow)>>displayDamageEvent:
> ApplicationWindow(Window)>>displayPendingInvalidation
> optimized [] in VisualPart>>repairDamage
> BlockClosure>>cull:
> ApplicationWindow(Object)>>ifNotNil:
> ReComposingComposite(VisualPart)>>repairDamage
> optimized [] in ScheduledWindow>>extentEvent:
> BlockClosure>>cull:
> ReComposingComposite(Object)>>ifNotNil:
> ApplicationWindow(ScheduledWindow)>>extentEvent:
> ApplicationWindow(ScheduledWindow)>>refresh
> ApplicationWindow(ScheduledWindow)>>newGraphicsDevice:
> ApplicationWindow>>newGraphicsDevice:
> optimized [] in Screen>>updateWidgetPolicy
> optimized [] in Screen>>allScheduledWindowsDo:
> OrderedCollection>>do:
> Screen>>allScheduledWindowsDo:
> Screen>>updateWidgetPolicy
> Screen class>>install
> WindowingSystem>>setUp
> WindowingSystem(Subsystem)>>runActivationActions
> WindowingSystem(Subsystem)>>privateActivate
> WindowingSystem class(Subsystem class)>>activate
> optimized [] in Subsystem>>ensurePrerequisitesAreActive
> Set>>do:
> FinalizationSystem(Subsystem)>>ensurePrerequisitesAreActive
> FinalizationSystem(Subsystem)>>privateActivate
> FinalizationSystem class(Subsystem class)>>activate
> optimized [] in Subsystem>>ensurePrerequisitesAreActive
> Set>>do:
> DevelopmentSystem(Subsystem)>>ensurePrerequisitesAreActive
> DevelopmentSystem(Subsystem)>>privateActivate
> DevelopmentSystem class(Subsystem class)>>activate
> optimized [] in Subsystem>>ensurePrerequisitesAreActive
> Set>>do:
> InterestNotificationSystem(Subsystem)>>ensurePrerequisitesAreActive
> InterestNotificationSystem(Subsystem)>>privateActivate
> InterestNotificationSystem class(Subsystem class)>>activate
> optimized [] in Subsystem>>ensurePrerequisitesAreActive
> Set>>do:
> ImageConfigurationSystem(Subsystem)>>ensurePrerequisitesAreActive
> ImageConfigurationSystem(Subsystem)>>privateActivate
> ImageConfigurationSystem class(Subsystem class)>>activate
> optimized [] in Subsystem>>ensurePrerequisitesAreActive
> Set>>do:
> RuntimeSystem(Subsystem)>>ensurePrerequisitesAreActive
> RuntimeSystem(Subsystem)>>privateActivate
> RuntimeSystem class(Subsystem class)>>activate
> RuntimeSystem class(Subsystem class)>>reactToEvent:
> optimized [] in Subsystem class>>signalEvent:to:
> Set>>do:
> Subsystem class>>signalEvent:to:
> Subsystem class>>signalEvent:
> Snapshot>>signalSystemEvent:
> Snapshot>>postSnapshotBootstrap
> Snapshot>>privateSnapshot
> optimized [] in [] in Snapshot>>snapshot
> BlockClosure>>ensure:
> Cursor>>showWhile:
> optimized [] in Snapshot>>snapshot
> BlockClosure>>ensure:
> Snapshot class>>withSnapshot:do:
> Snapshot>>snapshot
> Snapshot>>saveAs:thenQuit:
> ObjectMemory class>>snapshotAs:thenQuit:
> ObjectMemory class>>snapshotThenQuit
> ObjectMemory class>>quitDialog
> VisualLauncher>>visualWorksExit
>
WinXPMenuBarButtonController(MenuBarButtonController)>>dispatchMenuSymb
> ol:
>
WinXPMenuBarButtonController(MenuBarButtonController)>>dispatchMenuSele
> ction:
> optimized [] in Win95MenuBarButtonController>>menuBarActionForMenu:
> BlockClosure>>ensure:
>
WinXPMenuBarButtonController(Win95MenuBarButtonController)>>menuBarActi
> onForMenu:
> WinXPMenuBarButtonController(MenuBarButtonController)>>menuBarAction
>
WinXPMenuBarButtonController(MenuBarButtonController)>>redButtonPressed

> Event:
> RedButtonPressedEvent>>dispatchTo:
> WinXPMenuBarButtonController(Controller)>>handleEvent:
> EventDispatcher>>dispatch:to:
> EventDispatcher>>dispatchEvent:
> RedButtonPressedEvent(Event)>>dispatch
> optimized [] in Event>>dispatchForWindowManager:
> UndefinedObject>>ifNotNil:ifNil:
> ApplicationStandardSystemController>>inTransactionDo:
>
ApplicationStandardSystemController>>executeInContextWithoutUpdateWidge

> ts:
> ApplicationStandardSystemController>>executeInContext:
> ApplicationStandardSystemController>>eventExecuteInContext:
> RedButtonPressedEvent(Event)>>executeInWindowContext:
> RedButtonPressedEvent(Event)>>dispatchForWindowManager:
> optimized [] in [] in WindowManager>>safelyDispatchForWindowManager:
> BlockClosure>>ensure:
> optimized [] in WindowManager>>safelyDispatchForWindowManager:
> BlockClosure>>on:do:
> WindowManager>>safelyDispatchForWindowManager:
> WindowManager>>processNextEvent
> optimized [] in [] in WindowManager>>unboundMethod
> BlockClosure>>on:do:
> optimized [] in WindowManager>>unboundMethod
> BlockClosure>>on:do:
> optimized [] in Process class>>unboundMethodwith:with:...
>
>
> -----Original Message-----
> From: [hidden email] [mailto:[hidden email]] On
> Behalf Of Steven Kelly
> Sent: woensdag 25 januari 2012 14:51
> To: VWNC NC
> Subject: Re: [vwnc] [7.7.1] Screen color depth change corrupts
> scrollbars
>
> Thanks Mark. CachedImage and Icon flushCaches get rid of Pixmaps from
> the old bit depth. That was automated in 7.7 in
> processUnknownEvent:for:
> / updatePlatformDepthTo: - earlier they just updated the screen bounds
> but not the bit-depth. While that solved the earlier problems with
out-

> of-date Pixmaps, maybe the fact that it made the change at priority
> 90 also simultaneously broke the previously-working code in ImageCache
> users?
>
> The problem we see now isn't an out-of-date Pixmap, but a corrupt
> Image:
> bits instance variable is for 16-bit depth, but class and other
> instvars are for 32-bit.
>
> Steve
>
> Mark Pirogovsky [mailto:[hidden email]] wrote 25 January 2012
> 15:23
> > I do see it all the time. It is not only Scroll bars, but many other
> > places like the tree views. This started happening I believe in VW
> 7.6.
> >
> > As soon as I see it i run the following in the work space:
> >
> >
> > CachedImage flushCaches.
> > Icon flushCaches.
> > WindowManager purgeDeadWindows.
> > WindowManager restoreAll.
> >
> > Steven Kelly wrote:
> > > How does a Depth32Image come to have its bits in a 16-bit image
> > > format? The images in question are in an ImageCache for Windows
> > > scrollbars, and the problem occurs when I've accessed my work PC
> > > with Remote Desktop Connection, which drops the screen depth from
> 32
> > > to 16 bits. Fairly commonly, one or more of the scrollbars show up
> > > corrupted when I use the PC directly at work the next day (no
> reboot
> > > or logout).
> > >
> > > The screenshot shows the corruption in the launcher scrollbar, an
> > > inspector on the entry for that size scrollbar in the ImageCache,
> > > and the result of the code in the evaluation pane, which creates a
> > > 16-bit image using the bits from this 32-bit image.
> > >
> > > Does anyone else see scrollbar corruption like this, or have any
> > > idea how it could happen? Maybe because the
> platformScreenDepthChanged:
> > > is processed at priority 90, so can interrupt the creation of a
new
> > > scrollbar image that is at priority 50?
> > >
> > > Cheers,
> > > Steve
>
> _______________________________________________
> vwnc mailing list
> [hidden email]
> http://lists.cs.uiuc.edu/mailman/listinfo/vwnc

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: [7.7.1] Screen color depth change corrupts scrollbars

Steven Kelly
OK, looks like this is reproducible - perhaps someone from Cincom could
check and create an AR?

In a virgin 7.7.1 visual.im, I can cause the primitiveFailed when going
from 16 to 32-bit depth, and image bits corruption when going back to 16
bit:

1) in DisplaySurface>>contentsOfArea:into:startingAt:, insert a
conditional probe before the "^self" line with this condition:

aRectangle extent = 97 asPoint and: [OneShot isNil and: [OneShot :=
true]]

Agree to create OneShot as a global variable. We use it to prevent this
breakpoint happening again during Pixmap pickling in
updatePlatformDepthTo:.

2) in a workspace, inspect the result of the following code:

pixmap := Pixmap extent: 97 asPoint.
pixmap background: ColorValue lightCyan; clear.
im := pixmap asImage

3) when the debugger pops up, change your Windows desktop to a different
color depth

4) when you proceed in the debugger, you'll get a primitiveFailed or a
corrupt Image.

The same problem occurs rather frequently in normal VW use, this is just
a reliable way to duplicate it.

Steve

Steven Kelly wrote 25 January 2012 18:35

> Thanks Mark (Plas). Your symptom may be related to mine, if the
> underlying problem is indeed the priority 90 changing of Screen depth
> halfway through a priority 50 Pixmap <-> Image operation. 7.7.1
> corrected a problem in AlphaCompositedImage>>fetchCompositionTarget:,
> if
> the medium bounds changed during the composition. But a change in the
> medium depth will cause problems that the current code can't handle.
>
> The fetchCompositionTarget: code shows the problem very clearly:
> - at the start it checks that its composition image is the same bit
> depth as the screen
> - later it bitblts the medium contents into the composition image bits
> If the depth changes between those two commands, there will either be
a
> primitive fail (if the second command's primitive does its own sanity
> check, as Mark's error indicates), or the contents of the bits instvar
> would be corrupted (as happens in my case during "pixmap asImage" for
> scrollbars). Which of these occurs may be dependent on whether we are
> changing from 16 to 32-bit or vice versa: in one case the data from
the

> new 32-bit Pixmap won't fit in the 16-bit Image's bits instvar, so we
> get a primitiveFailed; in the other there's room in the bits instvar,
> so
> we get visible corruption and zeroes at the end.
>
> Steve
>
> > -----Original Message-----
> > From: Mark Plas [mailto:[hidden email]]
> > Sent: 25 January 2012 16:22
> > To: Steven Kelly; VWNC NC
> > Subject: RE: [vwnc] [7.7.1] Screen color depth change corrupts
> > scrollbars
> >
> > We often get "a primitive has failed" when using Remote Desktop
> > Connection, after we try to start an image that has been saved on a
> PC
> > with 24 bit colors. It has something to do with
AlphaCompositedImage.

> >
> > I haven't looked at why it crashes (we learned to live with it).
> > Perhaps this problem is related to yours?
> >
> > There's a stack trace below:
> >
> > a primitive has failed
> > ApplicationWindow(Object)>>error:
> > ApplicationWindow(Object)>>primitiveFailed
> >
>
ApplicationWindow(Window)>>deviceContentsOfAreaOriginX:y:width:height:i

> > nto:startingAt:
> > ApplicationWindow(DisplaySurface)>>contentsOfArea:into:startingAt:
> > optimized [] in AlphaCompositedImage>>fetchCompositionTarget:
> > BlockClosure>>cull:
> > Depth16Image(Object)>>ifNil:ifNotNil:
> > AlphaCompositedImage>>fetchCompositionTarget:
> > AlphaCompositedImage>>displayOn:
> > AlphaCompositedImage(VisualComponent)>>displayOn:at:
> > AlphaCompositedImage(VisualComponent)>>displayOn:at:enabled:
> >
Win98ToolbarButtonView(Win95ActionButtonView)>>displayLabelOn:offset:

> > Win98ToolbarButtonView>>displayLabelOn:offset:
> > optimized [] in Win98ToolbarButtonView>>displayOn:
> > BlockClosure>>cull:
> > AlphaCompositedImage(Object)>>ifNotNil:
> > Win98ToolbarButtonView>>displayOn:
> > BoundedWrapper>>displayOn:
> > SpecWrapper(Wrapper)>>displayOn:
> > SpecWrapper(WidgetWrapper)>>displayOn:
> > Win98ToolBar(CompositePart)>>displayOn:
> > Win98ToolBar(ToolBar)>>displayOn:
> > BoundedWrapper>>displayOn:
> > ReComposingComposite(CompositePart)>>displayOn:
> > WindowDisplayPolicy>>displayDamageList:in:
> > ApplicationWindow(ScheduledWindow)>>displayDamageEvent:
> > ApplicationWindow(Window)>>displayPendingInvalidation
> > optimized [] in VisualPart>>repairDamage
> > BlockClosure>>cull:
> > ApplicationWindow(Object)>>ifNotNil:
> > ReComposingComposite(VisualPart)>>repairDamage
> > optimized [] in ScheduledWindow>>extentEvent:
> > BlockClosure>>cull:
> > ReComposingComposite(Object)>>ifNotNil:
> > ApplicationWindow(ScheduledWindow)>>extentEvent:
> > ApplicationWindow(ScheduledWindow)>>refresh
> > ApplicationWindow(ScheduledWindow)>>newGraphicsDevice:
> > ApplicationWindow>>newGraphicsDevice:
> > optimized [] in Screen>>updateWidgetPolicy
> > optimized [] in Screen>>allScheduledWindowsDo:
> > OrderedCollection>>do:
> > Screen>>allScheduledWindowsDo:
> > Screen>>updateWidgetPolicy
> > Screen class>>install
> > WindowingSystem>>setUp
> > WindowingSystem(Subsystem)>>runActivationActions
> > WindowingSystem(Subsystem)>>privateActivate
> > WindowingSystem class(Subsystem class)>>activate
> > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > Set>>do:
> > FinalizationSystem(Subsystem)>>ensurePrerequisitesAreActive
> > FinalizationSystem(Subsystem)>>privateActivate
> > FinalizationSystem class(Subsystem class)>>activate
> > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > Set>>do:
> > DevelopmentSystem(Subsystem)>>ensurePrerequisitesAreActive
> > DevelopmentSystem(Subsystem)>>privateActivate
> > DevelopmentSystem class(Subsystem class)>>activate
> > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > Set>>do:
> > InterestNotificationSystem(Subsystem)>>ensurePrerequisitesAreActive
> > InterestNotificationSystem(Subsystem)>>privateActivate
> > InterestNotificationSystem class(Subsystem class)>>activate
> > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > Set>>do:
> > ImageConfigurationSystem(Subsystem)>>ensurePrerequisitesAreActive
> > ImageConfigurationSystem(Subsystem)>>privateActivate
> > ImageConfigurationSystem class(Subsystem class)>>activate
> > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > Set>>do:
> > RuntimeSystem(Subsystem)>>ensurePrerequisitesAreActive
> > RuntimeSystem(Subsystem)>>privateActivate
> > RuntimeSystem class(Subsystem class)>>activate
> > RuntimeSystem class(Subsystem class)>>reactToEvent:
> > optimized [] in Subsystem class>>signalEvent:to:
> > Set>>do:
> > Subsystem class>>signalEvent:to:
> > Subsystem class>>signalEvent:
> > Snapshot>>signalSystemEvent:
> > Snapshot>>postSnapshotBootstrap
> > Snapshot>>privateSnapshot
> > optimized [] in [] in Snapshot>>snapshot
> > BlockClosure>>ensure:
> > Cursor>>showWhile:
> > optimized [] in Snapshot>>snapshot
> > BlockClosure>>ensure:
> > Snapshot class>>withSnapshot:do:
> > Snapshot>>snapshot
> > Snapshot>>saveAs:thenQuit:
> > ObjectMemory class>>snapshotAs:thenQuit:
> > ObjectMemory class>>snapshotThenQuit
> > ObjectMemory class>>quitDialog
> > VisualLauncher>>visualWorksExit
> >
>
WinXPMenuBarButtonController(MenuBarButtonController)>>dispatchMenuSymb
> > ol:
> >
>
WinXPMenuBarButtonController(MenuBarButtonController)>>dispatchMenuSele
> > ction:
> > optimized [] in Win95MenuBarButtonController>>menuBarActionForMenu:
> > BlockClosure>>ensure:
> >
>
WinXPMenuBarButtonController(Win95MenuBarButtonController)>>menuBarActi
> > onForMenu:
> > WinXPMenuBarButtonController(MenuBarButtonController)>>menuBarAction
> >
>
WinXPMenuBarButtonController(MenuBarButtonController)>>redButtonPressed

> > Event:
> > RedButtonPressedEvent>>dispatchTo:
> > WinXPMenuBarButtonController(Controller)>>handleEvent:
> > EventDispatcher>>dispatch:to:
> > EventDispatcher>>dispatchEvent:
> > RedButtonPressedEvent(Event)>>dispatch
> > optimized [] in Event>>dispatchForWindowManager:
> > UndefinedObject>>ifNotNil:ifNil:
> > ApplicationStandardSystemController>>inTransactionDo:
> >
>
ApplicationStandardSystemController>>executeInContextWithoutUpdateWidge

> > ts:
> > ApplicationStandardSystemController>>executeInContext:
> > ApplicationStandardSystemController>>eventExecuteInContext:
> > RedButtonPressedEvent(Event)>>executeInWindowContext:
> > RedButtonPressedEvent(Event)>>dispatchForWindowManager:
> > optimized [] in [] in WindowManager>>safelyDispatchForWindowManager:
> > BlockClosure>>ensure:
> > optimized [] in WindowManager>>safelyDispatchForWindowManager:
> > BlockClosure>>on:do:
> > WindowManager>>safelyDispatchForWindowManager:
> > WindowManager>>processNextEvent
> > optimized [] in [] in WindowManager>>unboundMethod
> > BlockClosure>>on:do:
> > optimized [] in WindowManager>>unboundMethod
> > BlockClosure>>on:do:
> > optimized [] in Process class>>unboundMethodwith:with:...
> >
> >
> > -----Original Message-----
> > From: [hidden email] [mailto:[hidden email]] On
> > Behalf Of Steven Kelly
> > Sent: woensdag 25 januari 2012 14:51
> > To: VWNC NC
> > Subject: Re: [vwnc] [7.7.1] Screen color depth change corrupts
> > scrollbars
> >
> > Thanks Mark. CachedImage and Icon flushCaches get rid of Pixmaps
from

> > the old bit depth. That was automated in 7.7 in
> > processUnknownEvent:for:
> > / updatePlatformDepthTo: - earlier they just updated the screen
> bounds
> > but not the bit-depth. While that solved the earlier problems with
> out-
> > of-date Pixmaps, maybe the fact that it made the change at priority
> > 90 also simultaneously broke the previously-working code in
> ImageCache
> > users?
> >
> > The problem we see now isn't an out-of-date Pixmap, but a corrupt
> > Image:
> > bits instance variable is for 16-bit depth, but class and other
> > instvars are for 32-bit.
> >
> > Steve
> >
> > Mark Pirogovsky [mailto:[hidden email]] wrote 25 January
> 2012
> > 15:23
> > > I do see it all the time. It is not only Scroll bars, but many
> other
> > > places like the tree views. This started happening I believe in VW
> > 7.6.
> > >
> > > As soon as I see it i run the following in the work space:
> > >
> > >
> > > CachedImage flushCaches.
> > > Icon flushCaches.
> > > WindowManager purgeDeadWindows.
> > > WindowManager restoreAll.
> > >
> > > Steven Kelly wrote:
> > > > How does a Depth32Image come to have its bits in a 16-bit image
> > > > format? The images in question are in an ImageCache for Windows
> > > > scrollbars, and the problem occurs when I've accessed my work PC
> > > > with Remote Desktop Connection, which drops the screen depth
from
> > 32
> > > > to 16 bits. Fairly commonly, one or more of the scrollbars show
> up
> > > > corrupted when I use the PC directly at work the next day (no
> > reboot
> > > > or logout).
> > > >
> > > > The screenshot shows the corruption in the launcher scrollbar,
an
> > > > inspector on the entry for that size scrollbar in the
ImageCache,

> > > > and the result of the code in the evaluation pane, which creates
> a
> > > > 16-bit image using the bits from this 32-bit image.
> > > >
> > > > Does anyone else see scrollbar corruption like this, or have any
> > > > idea how it could happen? Maybe because the
> > platformScreenDepthChanged:
> > > > is processed at priority 90, so can interrupt the creation of a
> new
> > > > scrollbar image that is at priority 50?
> > > >
> > > > Cheers,
> > > > Steve
> >
> > _______________________________________________
> > vwnc mailing list
> > [hidden email]
> > http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
>
> _______________________________________________
> vwnc mailing list
> [hidden email]
> http://lists.cs.uiuc.edu/mailman/listinfo/vwnc

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: [7.7.1] Screen color depth change corrupts scrollbars

Jon Paynter-2
Ive seen the same behavior all the way back to vw5i.  in 5i its much worse -- all the colors in the image get mangled.  but the steps to cause the problem are always the same:

Start image on a windows desktop with 32bit color depth and leave it running.
Access the same desktop from a remote location with 16bit color depth.    You get a funny looking scrollbar, or mangled colors, or a primitive failed walback, or all of the above.

As a side note, if you change color depth from 32 bit to 8bit (256 colors), then the primitive failed error doesnt show up.


On Wed, Jan 25, 2012 at 10:16 AM, Steven Kelly <[hidden email]> wrote:
OK, looks like this is reproducible - perhaps someone from Cincom could
check and create an AR?

In a virgin 7.7.1 visual.im, I can cause the primitiveFailed when going
from 16 to 32-bit depth, and image bits corruption when going back to 16
bit:

1) in DisplaySurface>>contentsOfArea:into:startingAt:, insert a
conditional probe before the "^self" line with this condition:

aRectangle extent = 97 asPoint and: [OneShot isNil and: [OneShot :=
true]]

Agree to create OneShot as a global variable. We use it to prevent this
breakpoint happening again during Pixmap pickling in
updatePlatformDepthTo:.

2) in a workspace, inspect the result of the following code:

pixmap := Pixmap extent: 97 asPoint.
pixmap background: ColorValue lightCyan; clear.
im := pixmap asImage

3) when the debugger pops up, change your Windows desktop to a different
color depth

4) when you proceed in the debugger, you'll get a primitiveFailed or a
corrupt Image.

The same problem occurs rather frequently in normal VW use, this is just
a reliable way to duplicate it.

Steve

Steven Kelly wrote 25 January 2012 18:35
> Thanks Mark (Plas). Your symptom may be related to mine, if the
> underlying problem is indeed the priority 90 changing of Screen depth
> halfway through a priority 50 Pixmap <-> Image operation. 7.7.1
> corrected a problem in AlphaCompositedImage>>fetchCompositionTarget:,
> if
> the medium bounds changed during the composition. But a change in the
> medium depth will cause problems that the current code can't handle.
>
> The fetchCompositionTarget: code shows the problem very clearly:
> - at the start it checks that its composition image is the same bit
> depth as the screen
> - later it bitblts the medium contents into the composition image bits
> If the depth changes between those two commands, there will either be
a
> primitive fail (if the second command's primitive does its own sanity
> check, as Mark's error indicates), or the contents of the bits instvar
> would be corrupted (as happens in my case during "pixmap asImage" for
> scrollbars). Which of these occurs may be dependent on whether we are
> changing from 16 to 32-bit or vice versa: in one case the data from
the
> new 32-bit Pixmap won't fit in the 16-bit Image's bits instvar, so we
> get a primitiveFailed; in the other there's room in the bits instvar,
> so
> we get visible corruption and zeroes at the end.
>
> Steve
>
> > -----Original Message-----
> > From: Mark Plas [mailto:[hidden email]]
> > Sent: 25 January 2012 16:22
> > To: Steven Kelly; VWNC NC
> > Subject: RE: [vwnc] [7.7.1] Screen color depth change corrupts
> > scrollbars
> >
> > We often get "a primitive has failed" when using Remote Desktop
> > Connection, after we try to start an image that has been saved on a
> PC
> > with 24 bit colors. It has something to do with
AlphaCompositedImage.
> >
> > I haven't looked at why it crashes (we learned to live with it).
> > Perhaps this problem is related to yours?
> >
> > There's a stack trace below:
> >
> > a primitive has failed
> > ApplicationWindow(Object)>>error:
> > ApplicationWindow(Object)>>primitiveFailed
> >
>
ApplicationWindow(Window)>>deviceContentsOfAreaOriginX:y:width:height:i
> > nto:startingAt:
> > ApplicationWindow(DisplaySurface)>>contentsOfArea:into:startingAt:
> > optimized [] in AlphaCompositedImage>>fetchCompositionTarget:
> > BlockClosure>>cull:
> > Depth16Image(Object)>>ifNil:ifNotNil:
> > AlphaCompositedImage>>fetchCompositionTarget:
> > AlphaCompositedImage>>displayOn:
> > AlphaCompositedImage(VisualComponent)>>displayOn:at:
> > AlphaCompositedImage(VisualComponent)>>displayOn:at:enabled:
> >
Win98ToolbarButtonView(Win95ActionButtonView)>>displayLabelOn:offset:
> > Win98ToolbarButtonView>>displayLabelOn:offset:
> > optimized [] in Win98ToolbarButtonView>>displayOn:
> > BlockClosure>>cull:
> > AlphaCompositedImage(Object)>>ifNotNil:
> > Win98ToolbarButtonView>>displayOn:
> > BoundedWrapper>>displayOn:
> > SpecWrapper(Wrapper)>>displayOn:
> > SpecWrapper(WidgetWrapper)>>displayOn:
> > Win98ToolBar(CompositePart)>>displayOn:
> > Win98ToolBar(ToolBar)>>displayOn:
> > BoundedWrapper>>displayOn:
> > ReComposingComposite(CompositePart)>>displayOn:
> > WindowDisplayPolicy>>displayDamageList:in:
> > ApplicationWindow(ScheduledWindow)>>displayDamageEvent:
> > ApplicationWindow(Window)>>displayPendingInvalidation
> > optimized [] in VisualPart>>repairDamage
> > BlockClosure>>cull:
> > ApplicationWindow(Object)>>ifNotNil:
> > ReComposingComposite(VisualPart)>>repairDamage
> > optimized [] in ScheduledWindow>>extentEvent:
> > BlockClosure>>cull:
> > ReComposingComposite(Object)>>ifNotNil:
> > ApplicationWindow(ScheduledWindow)>>extentEvent:
> > ApplicationWindow(ScheduledWindow)>>refresh
> > ApplicationWindow(ScheduledWindow)>>newGraphicsDevice:
> > ApplicationWindow>>newGraphicsDevice:
> > optimized [] in Screen>>updateWidgetPolicy
> > optimized [] in Screen>>allScheduledWindowsDo:
> > OrderedCollection>>do:
> > Screen>>allScheduledWindowsDo:
> > Screen>>updateWidgetPolicy
> > Screen class>>install
> > WindowingSystem>>setUp
> > WindowingSystem(Subsystem)>>runActivationActions
> > WindowingSystem(Subsystem)>>privateActivate
> > WindowingSystem class(Subsystem class)>>activate
> > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > Set>>do:
> > FinalizationSystem(Subsystem)>>ensurePrerequisitesAreActive
> > FinalizationSystem(Subsystem)>>privateActivate
> > FinalizationSystem class(Subsystem class)>>activate
> > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > Set>>do:
> > DevelopmentSystem(Subsystem)>>ensurePrerequisitesAreActive
> > DevelopmentSystem(Subsystem)>>privateActivate
> > DevelopmentSystem class(Subsystem class)>>activate
> > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > Set>>do:
> > InterestNotificationSystem(Subsystem)>>ensurePrerequisitesAreActive
> > InterestNotificationSystem(Subsystem)>>privateActivate
> > InterestNotificationSystem class(Subsystem class)>>activate
> > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > Set>>do:
> > ImageConfigurationSystem(Subsystem)>>ensurePrerequisitesAreActive
> > ImageConfigurationSystem(Subsystem)>>privateActivate
> > ImageConfigurationSystem class(Subsystem class)>>activate
> > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > Set>>do:
> > RuntimeSystem(Subsystem)>>ensurePrerequisitesAreActive
> > RuntimeSystem(Subsystem)>>privateActivate
> > RuntimeSystem class(Subsystem class)>>activate
> > RuntimeSystem class(Subsystem class)>>reactToEvent:
> > optimized [] in Subsystem class>>signalEvent:to:
> > Set>>do:
> > Subsystem class>>signalEvent:to:
> > Subsystem class>>signalEvent:
> > Snapshot>>signalSystemEvent:
> > Snapshot>>postSnapshotBootstrap
> > Snapshot>>privateSnapshot
> > optimized [] in [] in Snapshot>>snapshot
> > BlockClosure>>ensure:
> > Cursor>>showWhile:
> > optimized [] in Snapshot>>snapshot
> > BlockClosure>>ensure:
> > Snapshot class>>withSnapshot:do:
> > Snapshot>>snapshot
> > Snapshot>>saveAs:thenQuit:
> > ObjectMemory class>>snapshotAs:thenQuit:
> > ObjectMemory class>>snapshotThenQuit
> > ObjectMemory class>>quitDialog
> > VisualLauncher>>visualWorksExit
> >
>
WinXPMenuBarButtonController(MenuBarButtonController)>>dispatchMenuSymb
> > ol:
> >
>
WinXPMenuBarButtonController(MenuBarButtonController)>>dispatchMenuSele
> > ction:
> > optimized [] in Win95MenuBarButtonController>>menuBarActionForMenu:
> > BlockClosure>>ensure:
> >
>
WinXPMenuBarButtonController(Win95MenuBarButtonController)>>menuBarActi
> > onForMenu:
> > WinXPMenuBarButtonController(MenuBarButtonController)>>menuBarAction
> >
>
WinXPMenuBarButtonController(MenuBarButtonController)>>redButtonPressed
> > Event:
> > RedButtonPressedEvent>>dispatchTo:
> > WinXPMenuBarButtonController(Controller)>>handleEvent:
> > EventDispatcher>>dispatch:to:
> > EventDispatcher>>dispatchEvent:
> > RedButtonPressedEvent(Event)>>dispatch
> > optimized [] in Event>>dispatchForWindowManager:
> > UndefinedObject>>ifNotNil:ifNil:
> > ApplicationStandardSystemController>>inTransactionDo:
> >
>
ApplicationStandardSystemController>>executeInContextWithoutUpdateWidge
> > ts:
> > ApplicationStandardSystemController>>executeInContext:
> > ApplicationStandardSystemController>>eventExecuteInContext:
> > RedButtonPressedEvent(Event)>>executeInWindowContext:
> > RedButtonPressedEvent(Event)>>dispatchForWindowManager:
> > optimized [] in [] in WindowManager>>safelyDispatchForWindowManager:
> > BlockClosure>>ensure:
> > optimized [] in WindowManager>>safelyDispatchForWindowManager:
> > BlockClosure>>on:do:
> > WindowManager>>safelyDispatchForWindowManager:
> > WindowManager>>processNextEvent
> > optimized [] in [] in WindowManager>>unboundMethod
> > BlockClosure>>on:do:
> > optimized [] in WindowManager>>unboundMethod
> > BlockClosure>>on:do:
> > optimized [] in Process class>>unboundMethodwith:with:...
> >
> >
> > -----Original Message-----
> > From: [hidden email] [mailto:[hidden email]] On
> > Behalf Of Steven Kelly
> > Sent: woensdag 25 januari 2012 14:51
> > To: VWNC NC
> > Subject: Re: [vwnc] [7.7.1] Screen color depth change corrupts
> > scrollbars
> >
> > Thanks Mark. CachedImage and Icon flushCaches get rid of Pixmaps
from
> > the old bit depth. That was automated in 7.7 in
> > processUnknownEvent:for:
> > / updatePlatformDepthTo: - earlier they just updated the screen
> bounds
> > but not the bit-depth. While that solved the earlier problems with
> out-
> > of-date Pixmaps, maybe the fact that it made the change at priority
> > 90 also simultaneously broke the previously-working code in
> ImageCache
> > users?
> >
> > The problem we see now isn't an out-of-date Pixmap, but a corrupt
> > Image:
> > bits instance variable is for 16-bit depth, but class and other
> > instvars are for 32-bit.
> >
> > Steve
> >
> > Mark Pirogovsky [mailto:[hidden email]] wrote 25 January
> 2012
> > 15:23
> > > I do see it all the time. It is not only Scroll bars, but many
> other
> > > places like the tree views. This started happening I believe in VW
> > 7.6.
> > >
> > > As soon as I see it i run the following in the work space:
> > >
> > >
> > > CachedImage flushCaches.
> > > Icon flushCaches.
> > > WindowManager purgeDeadWindows.
> > > WindowManager restoreAll.
> > >
> > > Steven Kelly wrote:
> > > > How does a Depth32Image come to have its bits in a 16-bit image
> > > > format? The images in question are in an ImageCache for Windows
> > > > scrollbars, and the problem occurs when I've accessed my work PC
> > > > with Remote Desktop Connection, which drops the screen depth
from
> > 32
> > > > to 16 bits. Fairly commonly, one or more of the scrollbars show
> up
> > > > corrupted when I use the PC directly at work the next day (no
> > reboot
> > > > or logout).
> > > >
> > > > The screenshot shows the corruption in the launcher scrollbar,
an
> > > > inspector on the entry for that size scrollbar in the
ImageCache,
> > > > and the result of the code in the evaluation pane, which creates
> a
> > > > 16-bit image using the bits from this 32-bit image.
> > > >
> > > > Does anyone else see scrollbar corruption like this, or have any
> > > > idea how it could happen? Maybe because the
> > platformScreenDepthChanged:
> > > > is processed at priority 90, so can interrupt the creation of a
> new
> > > > scrollbar image that is at priority 50?
> > > >
> > > > Cheers,
> > > > Steve
> >
> > _______________________________________________
> > vwnc mailing list
> > [hidden email]
> > http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
>
> _______________________________________________
> vwnc mailing list
> [hidden email]
> http://lists.cs.uiuc.edu/mailman/listinfo/vwnc

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc


_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: [7.7.1] Screen color depth change corrupts scrollbars

Maarten Mostert
In reply to this post by Steven Kelly

Steve,

Just out of curiosity, what is the hardware context were you still use 16 bit depth monitors ?

Thought that these went out of sale ages ago.

 

Maarten,

 

Author Said: "Steven Kelly" <[hidden email]> |

> OK, looks like this is reproducible - perhaps someone from Cincom could


> check and create an AR?
>
> In a virgin 7.7.1 visual.im, I can cause the primitiveFailed when going
> from 16 to 32-bit depth, and image bits corruption when going back to 16
> bit:
>
> 1) in DisplaySurface>>contentsOfArea:into:startingAt:, insert a
> conditional probe before the "^self" line with this condition:
>
> aRectangle extent = 97 asPoint and: [OneShot isNil and: [OneShot :=
> true]]
>
> Agree to create OneShot as a global variable. We use it to prevent this
> breakpoint happening again during Pixmap pickling in
> updatePlatformDepthTo:.
>
> 2) in a workspace, inspect the result of the following code:
>
> pixmap := Pixmap extent: 97 asPoint.
> pixmap background: ColorValue lightCyan; clear.
> im := pixmap asImage
>
> 3) when the debugger pops up, change your Windows desktop to a different
> color depth
>
> 4) when you proceed in the debugger, you'll get a primitiveFailed or a
> corrupt Image.
>
> The same problem occurs rather frequently in normal VW use, this is just
> a reliable way to duplicate it.
>
> Steve
>
> Steven Kelly wrote 25 January 2012 18:35
> > Thanks Mark (Plas). Your symptom may be related to mine, if the
> > underlying problem is indeed the priority 90 changing of Screen depth
> > halfway through a priority 50 Pixmap <-> Image operation. 7.7.1
> > corrected a problem in AlphaCompositedImage>>fetchCompositionTarget:,
> > if
> > the medium bounds changed during the composition. But a change in the
> > medium depth will cause problems that the current code can't handle.
> >
> > The fetchCompositionTarget: code shows the problem very clearly:
> > - at the start it checks that its composition image is the same bit
> > depth as the screen
> > - later it bitblts the medium contents into the composition image bits
> > If the depth changes between those two commands, there will either be
> a
> > primitive fail (if the second command's primitive does its own sanity
> > check, as Mark's error indicates), or the contents of the bits instvar
> > would be corrupted (as happens in my case during "pixmap asImage" for
> > scrollbars). Which of these occurs may be dependent on whether we are
> > changing from 16 to 32-bit or vice versa: in one case the data from
> the
> > new 32-bit Pixmap won't fit in the 16-bit Image's bits instvar, so we
> > get a primitiveFailed; in the other there's room in the bits instvar,
> > so
> > we get visible corruption and zeroes at the end.
> >
> > Steve
> >
> > > -----Original Message-----
> > > From: Mark Plas [mailto:[hidden email]]
> > > Sent: 25 January 2012 16:22
> > > To: Steven Kelly; VWNC NC
> > > Subject: RE: [vwnc] [7.7.1] Screen color depth change corrupts
> > > scrollbars
> > >
> > > We often get "a primitive has failed" when using Remote Desktop
> > > Connection, after we try to start an image that has been saved on a
> > PC
> > > with 24 bit colors. It has something to do with
> AlphaCompositedImage.
> > >
> > > I haven't looked at why it crashes (we learned to live with it).
> > > Perhaps this problem is related to yours?
> > >
> > > There's a stack trace below:
> > >
> > > a primitive has failed
> > > ApplicationWindow(Object)>>error:
> > > ApplicationWindow(Object)>>primitiveFailed
> > >
> >
> ApplicationWindow(Window)>>deviceContentsOfAreaOriginX:y:width:height:i
> > > nto:startingAt:
> > >
> ApplicationWindow(DisplaySurface)>>contentsOfArea:into:startingAt:
> > > optimized [] in AlphaCompositedImage>>fetchCompositionTarget:
> > > BlockClosure>>cull:
> > > Depth16Image(Object)>>ifNil:ifNotNil:
> > > AlphaCompositedImage>>fetchCompositionTarget:
> > > AlphaCompositedImage>>displayOn:
> > > AlphaCompositedImage(VisualComponent)>>displayOn:at:
> > > AlphaCompositedImage(VisualComponent)>>displayOn:at:enabled:
> > >
> Win98ToolbarButtonView(Win95ActionButtonView)>>displayLabelOn:offset:
> > > Win98ToolbarButtonView>>displayLabelOn:offset:
> > > optimized [] in Win98ToolbarButtonView>>displayOn:
> > > BlockClosure>>cull:
> > > AlphaCompositedImage(Object)>>ifNotNil:
> > > Win98ToolbarButtonView>>displayOn:
> > > BoundedWrapper>>displayOn:
> > > SpecWrapper(Wrapper)>>displayOn:
> > > SpecWrapper(WidgetWrapper)>>displayOn:
> > > Win98ToolBar(CompositePart)>>displayOn:
> > > Win98ToolBar(ToolBar)>>displayOn:
> > > BoundedWrapper>>displayOn:
> > > ReComposingComposite(CompositePart)>>displayOn:
> > > WindowDisplayPolicy>>displayDamageList:in:
> > > ApplicationWindow(ScheduledWindow)>>displayDamageEvent:
> > > ApplicationWindow(Window)>>displayPendingInvalidation
> > > optimized [] in VisualPart>>repairDamage
> > > BlockClosure>>cull:
> > > ApplicationWindow(Object)>>ifNotNil:
> > > ReComposingComposite(VisualPart)>>repairDamage
> > > optimized [] in ScheduledWindow>>extentEvent:
> > > BlockClosure>>cull:
> > > ReComposingComposite(Object)>>ifNotNil:
> > > ApplicationWindow(ScheduledWindow)>>extentEvent:
> > > ApplicationWindow(ScheduledWindow)>>refresh
> > > ApplicationWindow(ScheduledWindow)>>newGraphicsDevice:
> > > ApplicationWindow>>newGraphicsDevice:
> > > optimized [] in Screen>>updateWidgetPolicy
> > > optimized [] in Screen>>allScheduledWindowsDo:
> > > OrderedCollection>>do:
> > > Screen>>allScheduledWindowsDo:
> > > Screen>>updateWidgetPolicy
> > > Screen class>>install
> > > WindowingSystem>>setUp
> > > WindowingSystem(Subsystem)>>runActivationActions
> > > WindowingSystem(Subsystem)>>privateActivate
> > > WindowingSystem class(Subsystem class)>>activate
> > > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > > Set>>do:
> > > FinalizationSystem(Subsystem)>>ensurePrerequisitesAreActive
> > > FinalizationSystem(Subsystem)>>privateActivate
> > > FinalizationSystem class(Subsystem class)>>activate
> > > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > > Set>>do:
> > > DevelopmentSystem(Subsystem)>>ensurePrerequisitesAreActive
> > > DevelopmentSystem(Subsystem)>>privateActivate
> > > DevelopmentSystem class(Subsystem class)>>activate
> > > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > > Set>>do:
> > >
> InterestNotificationSystem(Subsystem)>>ensurePrerequisitesAreActive
> > > InterestNotificationSystem(Subsystem)>>privateActivate
> > > InterestNotificationSystem class(Subsystem class)>>activate
> > > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > > Set>>do:
> > > ImageConfigurationSystem(Subsystem)>>ensurePrerequisitesAreActive
> > > ImageConfigurationSystem(Subsystem)>>privateActivate
> > > ImageConfigurationSystem class(Subsystem class)>>activate
> > > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > > Set>>do:
> > > RuntimeSystem(Subsystem)>>ensurePrerequisitesAreActive
> > > RuntimeSystem(Subsystem)>>privateActivate
> > > RuntimeSystem class(Subsystem class)>>activate
> > > RuntimeSystem class(Subsystem class)>>reactToEvent:
> > > optimized [] in Subsystem class>>signalEvent:to:
> > > Set>>do:
> > > Subsystem class>>signalEvent:to:
> > > Subsystem class>>signalEvent:
> > > Snapshot>>signalSystemEvent:
> > > Snapshot>>postSnapshotBootstrap
> > > Snapshot>>privateSnapshot
> > > optimized [] in [] in Snapshot>>snapshot
> > > BlockClosure>>ensure:
> > > Cursor>>showWhile:
> > > optimized [] in Snapshot>>snapshot
> > > BlockClosure>>ensure:
> > > Snapshot class>>withSnapshot:do:
> > > Snapshot>>snapshot
> > > Snapshot>>saveAs:thenQuit:
> > > ObjectMemory class>>snapshotAs:thenQuit:
> > > ObjectMemory class>>snapshotThenQuit
> > > ObjectMemory class>>quitDialog
> > > VisualLauncher>>visualWorksExit
> > >
> >
> WinXPMenuBarButtonController(MenuBarButtonController)>>dispatchMenuSymb
> > > ol:
> > >
> >
> WinXPMenuBarButtonController(MenuBarButtonController)>>dispatchMenuSele
> > > ction:
> > > optimized [] in
> Win95MenuBarButtonController>>menuBarActionForMenu:
> > > BlockClosure>>ensure:
> > >
> >
> WinXPMenuBarButtonController(Win95MenuBarButtonController)>>menuBarActi
> > > onForMenu:
> > >
> WinXPMenuBarButtonController(MenuBarButtonController)>>menuBarAction
> > >
> >
> WinXPMenuBarButtonController(MenuBarButtonController)>>redButtonPressed
> > > Event:
> > > RedButtonPressedEvent>>dispatchTo:
> > > WinXPMenuBarButtonController(Controller)>>handleEvent:
> > > EventDispatcher>>dispatch:to:
> > > EventDispatcher>>dispatchEvent:
> > > RedButtonPressedEvent(Event)>>dispatch
> > > optimized [] in Event>>dispatchForWindowManager:
> > > UndefinedObject>>ifNotNil:ifNil:
> > > ApplicationStandardSystemController>>inTransactionDo:
> > >
> >
> ApplicationStandardSystemController>>executeInContextWithoutUpdateWidge
> > > ts:
> > > ApplicationStandardSystemController>>executeInContext:
> > > ApplicationStandardSystemController>>eventExecuteInContext:
> > > RedButtonPressedEvent(Event)>>executeInWindowContext:
> > > RedButtonPressedEvent(Event)>>dispatchForWindowManager:
> > > optimized [] in [] in
> WindowManager>>safelyDispatchForWindowManager:
> > > BlockClosure>>ensure:
> > > optimized [] in WindowManager>>safelyDispatchForWindowManager:
> > > BlockClosure>>on:do:
> > > WindowManager>>safelyDispatchForWindowManager:
> > > WindowManager>>processNextEvent
> > > optimized [] in [] in WindowManager>>unboundMethod
> > > BlockClosure>>on:do:
> > > optimized [] in WindowManager>>unboundMethod
> > > BlockClosure>>on:do:
> > > optimized [] in Process class>>unboundMethodwith:with:...
> > >
> > >
> > > -----Original Message-----
> > > From: [hidden email] [mailto:[hidden email]] On
> > > Behalf Of Steven Kelly
> > > Sent: woensdag 25 januari 2012 14:51
> > > To: VWNC NC
> > > Subject: Re: [vwnc] [7.7.1] Screen color depth change corrupts
> > > scrollbars
> > >
> > > Thanks Mark. CachedImage and Icon flushCaches get rid of Pixmaps
> from
> > > the old bit depth. That was automated in 7.7 in
> > > processUnknownEvent:for:
> > > / updatePlatformDepthTo: - earlier they just updated the screen
> > bounds
> > > but not the bit-depth. While that solved the earlier problems with
> > out-
> > > of-date Pixmaps, maybe the fact that it made the change at priority
> > > 90 also simultaneously broke the previously-working code in
> > ImageCache
> > > users?
> > >
> > > The problem we see now isn't an out-of-date Pixmap, but a corrupt
> > > Image:
> > > bits instance variable is for 16-bit depth, but class and other
> > > instvars are for 32-bit.
> > >
> > > Steve
> > >
> > > Mark Pirogovsky [mailto:[hidden email]] wrote 25 January
> > 2012
> > > 15:23
> > > > I do see it all the time. It is not only Scroll bars, but many
> > other
> > > > places like the tree views. This started happening I believe in VW
> > > 7.6.
> > > >
> > > > As soon as I see it i run the following in the work space:
> > > >
> > > >
> > > > CachedImage flushCaches.
> > > > Icon flushCaches.
> > > > WindowManager purgeDeadWindows.
> > > > WindowManager restoreAll.
> > > >
> > > > Steven Kelly wrote:
> > > > > How does a Depth32Image come to have its bits in a 16-bit
> image
> > > > > format? The images in question are in an ImageCache for
> Windows
> > > > > scrollbars, and the problem occurs when I've accessed my work
> PC
> > > > > with Remote Desktop Connection, which drops the screen depth
> from
> > > 32
> > > > > to 16 bits. Fairly commonly, one or more of the scrollbars
> show
> > up
> > > > > corrupted when I use the PC directly at work the next day (no
> > > reboot
> > > > > or logout).
> > > > >
> > > > > The screenshot shows the corruption in the launcher
> scrollbar,
> an
> > > > > inspector on the entry for that size scrollbar in the
> ImageCache,
> > > > > and the result of the code in the evaluation pane, which
> creates
> > a
> > > > > 16-bit image using the bits from this 32-bit image.
> > > > >
> > > > > Does anyone else see scrollbar corruption like this, or have
> any
> > > > > idea how it could happen? Maybe because the
> > > platformScreenDepthChanged:
> > > > > is processed at priority 90, so can interrupt the creation of
> a
> > new
> > > > > scrollbar image that is at priority 50?
> > > > >
> > > > > Cheers,
> > > > > Steve
> > >
> > > _______________________________________________
> > > vwnc mailing list
> > > [hidden email]
> > > http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
> >
> > _______________________________________________
> > vwnc mailing list
> > [hidden email]
> > http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
>
> _______________________________________________
> vwnc mailing list
> [hidden email]
> http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
>

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: [7.7.1] Screen color depth change corrupts scrollbars

Steven Kelly

16-bit is used by Remote Desktop Connection. It’s a network optimization, not a hardware thing.

 

From: [hidden email] [mailto:[hidden email]]

Just out of curiosity, what is the hardware context were you still use 16 bit depth monitors ?

Thought that these went out of sale ages ago.

 

 

Author Said: "Steven Kelly" <[hidden email]> |

> OK, looks like this is reproducible - perhaps someone from Cincom could


> check and create an AR?
>
> In a virgin 7.7.1 visual.im, I can cause the primitiveFailed when going
> from 16 to 32-bit depth, and image bits corruption when going back to 16
> bit:
>
> 1) in DisplaySurface>>contentsOfArea:into:startingAt:, insert a
> conditional probe before the "^self" line with this condition:
>
> aRectangle extent = 97 asPoint and: [OneShot isNil and: [OneShot :=
> true]]
>
> Agree to create OneShot as a global variable. We use it to prevent this
> breakpoint happening again during Pixmap pickling in
> updatePlatformDepthTo:.
>
> 2) in a workspace, inspect the result of the following code:
>
> pixmap := Pixmap extent: 97 asPoint.
> pixmap background: ColorValue lightCyan; clear.
> im := pixmap asImage
>
> 3) when the debugger pops up, change your Windows desktop to a different
> color depth
>
> 4) when you proceed in the debugger, you'll get a primitiveFailed or a
> corrupt Image.
>
> The same problem occurs rather frequently in normal VW use, this is just
> a reliable way to duplicate it.
>
> Steve
>
> Steven Kelly wrote 25 January 2012 18:35
> > Thanks Mark (Plas). Your symptom may be related to mine, if the
> > underlying problem is indeed the priority 90 changing of Screen depth
> > halfway through a priority 50 Pixmap <-> Image operation. 7.7.1
> > corrected a problem in AlphaCompositedImage>>fetchCompositionTarget:,
> > if
> > the medium bounds changed during the composition. But a change in the
> > medium depth will cause problems that the current code can't handle.
> >
> > The fetchCompositionTarget: code shows the problem very clearly:
> > - at the start it checks that its composition image is the same bit
> > depth as the screen
> > - later it bitblts the medium contents into the composition image bits
> > If the depth changes between those two commands, there will either be
> a
> > primitive fail (if the second command's primitive does its own sanity
> > check, as Mark's error indicates), or the contents of the bits instvar
> > would be corrupted (as happens in my case during "pixmap asImage" for
> > scrollbars). Which of these occurs may be dependent on whether we are
> > changing from 16 to 32-bit or vice versa: in one case the data from
> the
> > new 32-bit Pixmap won't fit in the 16-bit Image's bits instvar, so we
> > get a primitiveFailed; in the other there's room in the bits instvar,
> > so
> > we get visible corruption and zeroes at the end.
> >
> > Steve
> >
> > > -----Original Message-----
> > > From: Mark Plas [[hidden email]]
> > > Sent: 25 January 2012 16:22
> > > To: Steven Kelly; VWNC NC
> > > Subject: RE: [vwnc] [7.7.1] Screen color depth change corrupts
> > > scrollbars
> > >
> > > We often get "a primitive has failed" when using Remote Desktop
> > > Connection, after we try to start an image that has been saved on a
> > PC
> > > with 24 bit colors. It has something to do with
> AlphaCompositedImage.
> > >
> > > I haven't looked at why it crashes (we learned to live with it).
> > > Perhaps this problem is related to yours?
> > >
> > > There's a stack trace below:
> > >
> > > a primitive has failed
> > > ApplicationWindow(Object)>>error:
> > > ApplicationWindow(Object)>>primitiveFailed
> > >
> >
> ApplicationWindow(Window)>>deviceContentsOfAreaOriginX:y:width:height:i
> > > nto:startingAt:
> > >
> ApplicationWindow(DisplaySurface)>>contentsOfArea:into:startingAt:
> > > optimized [] in AlphaCompositedImage>>fetchCompositionTarget:
> > > BlockClosure>>cull:
> > > Depth16Image(Object)>>ifNil:ifNotNil:
> > > AlphaCompositedImage>>fetchCompositionTarget:
> > > AlphaCompositedImage>>displayOn:
> > > AlphaCompositedImage(VisualComponent)>>displayOn:at:
> > > AlphaCompositedImage(VisualComponent)>>displayOn:at:enabled:
> > >
> Win98ToolbarButtonView(Win95ActionButtonView)>>displayLabelOn:offset:
> > > Win98ToolbarButtonView>>displayLabelOn:offset:
> > > optimized [] in Win98ToolbarButtonView>>displayOn:
> > > BlockClosure>>cull:
> > > AlphaCompositedImage(Object)>>ifNotNil:
> > > Win98ToolbarButtonView>>displayOn:
> > > BoundedWrapper>>displayOn:
> > > SpecWrapper(Wrapper)>>displayOn:
> > > SpecWrapper(WidgetWrapper)>>displayOn:
> > > Win98ToolBar(CompositePart)>>displayOn:
> > > Win98ToolBar(ToolBar)>>displayOn:
> > > BoundedWrapper>>displayOn:
> > > ReComposingComposite(CompositePart)>>displayOn:
> > > WindowDisplayPolicy>>displayDamageList:in:
> > > ApplicationWindow(ScheduledWindow)>>displayDamageEvent:
> > > ApplicationWindow(Window)>>displayPendingInvalidation
> > > optimized [] in VisualPart>>repairDamage
> > > BlockClosure>>cull:
> > > ApplicationWindow(Object)>>ifNotNil:
> > > ReComposingComposite(VisualPart)>>repairDamage
> > > optimized [] in ScheduledWindow>>extentEvent:
> > > BlockClosure>>cull:
> > > ReComposingComposite(Object)>>ifNotNil:
> > > ApplicationWindow(ScheduledWindow)>>extentEvent:
> > > ApplicationWindow(ScheduledWindow)>>refresh
> > > ApplicationWindow(ScheduledWindow)>>newGraphicsDevice:
> > > ApplicationWindow>>newGraphicsDevice:
> > > optimized [] in Screen>>updateWidgetPolicy
> > > optimized [] in Screen>>allScheduledWindowsDo:
> > > OrderedCollection>>do:
> > > Screen>>allScheduledWindowsDo:
> > > Screen>>updateWidgetPolicy
> > > Screen class>>install
> > > WindowingSystem>>setUp
> > > WindowingSystem(Subsystem)>>runActivationActions
> > > WindowingSystem(Subsystem)>>privateActivate
> > > WindowingSystem class(Subsystem class)>>activate
> > > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > > Set>>do:
> > > FinalizationSystem(Subsystem)>>ensurePrerequisitesAreActive
> > > FinalizationSystem(Subsystem)>>privateActivate
> > > FinalizationSystem class(Subsystem class)>>activate
> > > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > > Set>>do:
> > > DevelopmentSystem(Subsystem)>>ensurePrerequisitesAreActive
> > > DevelopmentSystem(Subsystem)>>privateActivate
> > > DevelopmentSystem class(Subsystem class)>>activate
> > > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > > Set>>do:
> > >
> InterestNotificationSystem(Subsystem)>>ensurePrerequisitesAreActive
> > > InterestNotificationSystem(Subsystem)>>privateActivate
> > > InterestNotificationSystem class(Subsystem class)>>activate
> > > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > > Set>>do:
> > > ImageConfigurationSystem(Subsystem)>>ensurePrerequisitesAreActive
> > > ImageConfigurationSystem(Subsystem)>>privateActivate
> > > ImageConfigurationSystem class(Subsystem class)>>activate
> > > optimized [] in Subsystem>>ensurePrerequisitesAreActive
> > > Set>>do:
> > > RuntimeSystem(Subsystem)>>ensurePrerequisitesAreActive
> > > RuntimeSystem(Subsystem)>>privateActivate
> > > RuntimeSystem class(Subsystem class)>>activate
> > > RuntimeSystem class(Subsystem class)>>reactToEvent:
> > > optimized [] in Subsystem class>>signalEvent:to:
> > > Set>>do:
> > > Subsystem class>>signalEvent:to:
> > > Subsystem class>>signalEvent:
> > > Snapshot>>signalSystemEvent:
> > > Snapshot>>postSnapshotBootstrap
> > > Snapshot>>privateSnapshot
> > > optimized [] in [] in Snapshot>>snapshot
> > > BlockClosure>>ensure:
> > > Cursor>>showWhile:
> > > optimized [] in Snapshot>>snapshot
> > > BlockClosure>>ensure:
> > > Snapshot class>>withSnapshot:do:
> > > Snapshot>>snapshot
> > > Snapshot>>saveAs:thenQuit:
> > > ObjectMemory class>>snapshotAs:thenQuit:
> > > ObjectMemory class>>snapshotThenQuit
> > > ObjectMemory class>>quitDialog
> > > VisualLauncher>>visualWorksExit
> > >
> >
> WinXPMenuBarButtonController(MenuBarButtonController)>>dispatchMenuSymb
> > > ol:
> > >
> >
> WinXPMenuBarButtonController(MenuBarButtonController)>>dispatchMenuSele
> > > ction:
> > > optimized [] in
> Win95MenuBarButtonController>>menuBarActionForMenu:
> > > BlockClosure>>ensure:
> > >
> >
> WinXPMenuBarButtonController(Win95MenuBarButtonController)>>menuBarActi
> > > onForMenu:
> > >
> WinXPMenuBarButtonController(MenuBarButtonController)>>menuBarAction
> > >
> >
> WinXPMenuBarButtonController(MenuBarButtonController)>>redButtonPressed
> > > Event:
> > > RedButtonPressedEvent>>dispatchTo:
> > > WinXPMenuBarButtonController(Controller)>>handleEvent:
> > > EventDispatcher>>dispatch:to:
> > > EventDispatcher>>dispatchEvent:
> > > RedButtonPressedEvent(Event)>>dispatch
> > > optimized [] in Event>>dispatchForWindowManager:
> > > UndefinedObject>>ifNotNil:ifNil:
> > > ApplicationStandardSystemController>>inTransactionDo:
> > >
> >
> ApplicationStandardSystemController>>executeInContextWithoutUpdateWidge
> > > ts:
> > > ApplicationStandardSystemController>>executeInContext:
> > > ApplicationStandardSystemController>>eventExecuteInContext:
> > > RedButtonPressedEvent(Event)>>executeInWindowContext:
> > > RedButtonPressedEvent(Event)>>dispatchForWindowManager:
> > > optimized [] in [] in
> WindowManager>>safelyDispatchForWindowManager:
> > > BlockClosure>>ensure:
> > > optimized [] in WindowManager>>safelyDispatchForWindowManager:
> > > BlockClosure>>on:do:
> > > WindowManager>>safelyDispatchForWindowManager:
> > > WindowManager>>processNextEvent
> > > optimized [] in [] in WindowManager>>unboundMethod
> > > BlockClosure>>on:do:
> > > optimized [] in WindowManager>>unboundMethod
> > > BlockClosure>>on:do:
> > > optimized [] in Process class>>unboundMethodwith:with:...
> > >
> > >
> > > -----Original Message-----
> > > From: [hidden email] [[hidden email]] On
> > > Behalf Of Steven Kelly
> > > Sent: woensdag 25 januari 2012 14:51
> > > To: VWNC NC
> > > Subject: Re: [vwnc] [7.7.1] Screen color depth change corrupts
> > > scrollbars
> > >
> > > Thanks Mark. CachedImage and Icon flushCaches get rid of Pixmaps
> from
> > > the old bit depth. That was automated in 7.7 in
> > > processUnknownEvent:for:
> > > / updatePlatformDepthTo: - earlier they just updated the screen
> > bounds
> > > but not the bit-depth. While that solved the earlier problems with
> > out-
> > > of-date Pixmaps, maybe the fact that it made the change at priority
> > > 90 also simultaneously broke the previously-working code in
> > ImageCache
> > > users?
> > >
> > > The problem we see now isn't an out-of-date Pixmap, but a corrupt
> > > Image:
> > > bits instance variable is for 16-bit depth, but class and other
> > > instvars are for 32-bit.
> > >
> > > Steve
> > >
> > > Mark Pirogovsky [[hidden email]] wrote 25 January
> > 2012
> > > 15:23
> > > > I do see it all the time. It is not only Scroll bars, but many
> > other
> > > > places like the tree views. This started happening I believe in VW
> > > 7.6.
> > > >
> > > > As soon as I see it i run the following in the work space:
> > > >
> > > >
> > > > CachedImage flushCaches.
> > > > Icon flushCaches.
> > > > WindowManager purgeDeadWindows.
> > > > WindowManager restoreAll.
> > > >
> > > > Steven Kelly wrote:
> > > > > How does a Depth32Image come to have its bits in a 16-bit
> image
> > > > > format? The images in question are in an ImageCache for
> Windows
> > > > > scrollbars, and the problem occurs when I've accessed my work
> PC
> > > > > with Remote Desktop Connection, which drops the screen depth
> from
> > > 32
> > > > > to 16 bits. Fairly commonly, one or more of the scrollbars
> show
> > up
> > > > > corrupted when I use the PC directly at work the next day (no
> > > reboot
> > > > > or logout).
> > > > >
> > > > > The screenshot shows the corruption in the launcher
> scrollbar,
> an
> > > > > inspector on the entry for that size scrollbar in the
> ImageCache,
> > > > > and the result of the code in the evaluation pane, which
> creates
> > a
> > > > > 16-bit image using the bits from this 32-bit image.
> > > > >
> > > > > Does anyone else see scrollbar corruption like this, or have
> any
> > > > > idea how it could happen? Maybe because the
> > > platformScreenDepthChanged:
> > > > > is processed at priority 90, so can interrupt the creation of
> a
> > new
> > > > > scrollbar image that is at priority 50?
> > > > >
> > > > > Cheers,
> > > > > Steve
> > >
> > > _______________________________________________
> > > vwnc mailing list
> > > [hidden email]
> > > http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
> >
> > _______________________________________________
> > vwnc mailing list
> > [hidden email]
> > http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
>
> _______________________________________________
> vwnc mailing list
> [hidden email]
> http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
>

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc