Hi,

Those are two alternative fixes for
https://bugs.freedesktop.org/show_bug.cgi?id=108762
Either of them alone fixes the bug.

Brief description of the bug: Sometimes the screen-specific privates need to
be accessed in CloseScreen, but their `initialized` flag is already FALSE which
causes assertion failure. The flag has to be set to FALSE for them to get
reinitialized after restart. It is set before CloseScreen, because after it
some of the keys may be deallocated. More details in the bug.

* dix: Track DevPrivateKey initialization by generation
  Instead of using boolean flag, use a number that is set to the server
  generation which initialized it => no need to reset it, it "resets"
  automatically when serverGeneration increments. Downside: changes the
  _DevPrivateKeyRec struct.

* dix: Ignore initialized flag for screen-specific privates
  Never reset the `initialized` flag for screen-specific privates and never
  look at it. Instead search the list of already registered keys in
  `dixRegisterScreenSpecificPrivateKey` to determine if it was already
  registered.

Michal Srb (1):
  dix: Ignore initialized flag for screen-specific privates
  dix: Track DevPrivateKey initialization by generation

 dix/privates.c | 23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)

-- 
2.16.4

_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to