Re: A question about XCompositeRedirectSubwindows

2018-06-22 Thread Evgeny Zubok
Egil Möller 
writes:

> Impressive! It's nice to see someone spending the time to help out
> newcomers to a codebase / api.

Yo may also have a look at this good article:

http://www.talisman.org/~erlkonig/misc/x11-composite-tutorial/

___
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

[PATCH xserver] os: Recompute whether any clients are ready after check_timers()

2018-06-22 Thread Damien Leone
 >From c3e83b86bdd22403215bdd03cf7f70657bfaea37 Mon Sep 17 00:00:00 2001
From: Damien Leone 
Date: Mon, 18 Jun 2018 16:24:28 -0700
Subject: [PATCH] os: Recompute whether any clients are ready after
 check_timers()

If a driver calls AttendClient() from within a timer callback we
need to re-compute the local 'are_ready' to prevent the attended
client from waiting until WaitForSomething() times out.

This is a fix similar to commit 9ed5b263.

Signed-off-by: Damien Leone 
---
 os/WaitFor.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/os/WaitFor.c b/os/WaitFor.c
index ae317dc11..ff1d376e9 100644
--- a/os/WaitFor.c
+++ b/os/WaitFor.c
@@ -190,10 +190,11 @@ WaitForSomething(Bool are_ready)
 /* deal with any blocked jobs */
 if (workQueue) {
 ProcessWorkQueue();
-are_ready = clients_are_ready();
 }
 
 timeout = check_timers();
+are_ready = clients_are_ready();
+
 if (are_ready)
 timeout = 0;
 
-- 
2.17.1

___
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

[PATCH xserver] meson: ensure the libc has RPC functions when secure-rpc is enabled

2018-06-22 Thread Lyude Paul
Currently our meson.build just makes the assumption that the libc is
going to provide RPC functions. This doesn't actually seem to be the
case on Fedora, which causes compilation to fail unexpectedly:

../../Projects/xserver/os/rpcauth.c:47:10: fatal error: rpc/rpc.h: No such file 
or directory
 #include 
  ^~~
compilation terminated.

So, in the event that we can't use libtirpc ensure that we actually
check whether or not the libc provides rpc/rpc.h. If it doesn't, raise
an error.

Signed-off-by: Lyude Paul 
---
 os/meson.build | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/os/meson.build b/os/meson.build
index eb8fcf55d..0e41f9c02 100644
--- a/os/meson.build
+++ b/os/meson.build
@@ -56,9 +56,13 @@ endif
 
 rpc_dep = []
 if get_option('secure-rpc')
-# prefer libtirpc (if available), otherwise assume RPC functions are
+# prefer libtirpc (if available), otherwise ensure RPC functions are
 # provided by libc.
 rpc_dep = dependency('libtirpc', required: false)
+if not (rpc_dep.found() or cc.has_header('rpc/rpc.h'))
+error('secure-rpc requested, but neither libtirpc or libc RPC support 
were found')
+endif
+
 srcs_os += 'rpcauth.c'
 endif
 
-- 
2.17.1

___
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

Re: [ANN] edid-decode maintenance info

2018-06-22 Thread Hans Verkuil
On 06/22/2018 01:36 AM, Alan Coopersmith wrote:
> On 06/21/18 01:59 AM, Hans Verkuil wrote:
>> Hi all,
>>
>> As Adam already announced earlier this week I'm taking over maintenance of
>> the edid-decode utility.
>>
>> Since I am already maintaining other utilities on git.linuxtv.org I decided
>> to move the edid-decode git repo to linuxtv.org as well. It is now available
>> here: https://git.linuxtv.org/edid-decode.git/
>>
>> Patches, bug reports, etc. should be mailed to linux-me...@vger.kernel.org
>> (see https://linuxtv.org/lists.php). Please make sure the subject line
>> contains 'edid-decode'.
>>
>> One thing I would like to tackle in the very near future is to add support 
>> for
>> the new HDMI 2.1b EDID additions.
>>
>> I also know that some patches for edid-decode were posted to xorg-devel that
>> were never applied. I will try to find them, but to be safe it is best to
>> repost them to linux-media.
> 
> Thanks - there's also a handful of open bug reports against edid-decode in
> our bugzilla as well, some of which have patches attached:
> 
> https://bugs.freedesktop.org/buglist.cgi?component=App%2Fedid-decode
> 

Thank you for this information. I looked through all the bug reports and
100607, 100340 and 93366 were already fixed before I took over maintenance.

I just fixed 89348 and 93777 in my git repo, so those can be marked as
resolved.

The edid-decode component should probably be removed from the freedesktop
bugzilla.

Regards,

Hans
___
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

Re: [PATCH] modesetting: Update fb_id from shadow allocate and destroy if not set

2018-06-22 Thread Tony Lindgren
* Lyude Paul  [180621 22:55]:
> Hey, was a patch updated re: Keith's comments ever posted for this? Was going
> to review this, but I can't find any versions of this patch other than this
> one

You got the second version already, that's patchworks:

https://patchwork.freedesktop.org/patch/203834/

Looks like it's missing the description, do you want
me to resend it with the description below?

Regards,

Tony

> On Sat, 2018-02-03 at 10:34 -0800, Tony Lindgren wrote:
> > Looks like drmModeDirtyFB() stopped working at some point and we now
> > call it with fb_id of zero for rotated displays. This will stop displays
> > relying on DRM_IOCTL_MODE_DIRTYFB ioctl to display anything.
> > 
> > This regression probably with commit 3dcd591fa9b7 ("modesetting: Add
> > support for using RandR shadow buffers") that inroduced rotate_fb_id.
> > 
> > Let's fix this issue by copying rotate_fb_id to fb_id if zero and then
> > reset it back to zero after we're done with the rotation.
> > 
> > After the fix we then call drmModeDirtyFB() we then have the
> > following fb_id changes:
> > 
> > $ startx
> > drmmode_get_default_bpp: fb_id: 51
> > drmmode_get_default_bpp: cleared fb_id
> > dispatch_dirty: ms->drmmode.fb_id: 0 fb_id: 0
> > drmmode_set_mode_major: drmmode->fb_id: 52
> > dispatch_dirty: ms->drmmode.fb_id: 52 fb_id: 52
> > ...
> > 
> > $ xrandr --output DSI-1 --rotate right
> > drmmode_xf86crtc_resize: cleared old_fb_id
> > dispatch_dirty: ms->drmmode.fb_id: 0 fb_id: 0
> > drmmode_shadow_allocate: drmmode_crtc->rotate_fb_id: 50
> > dispatch_dirty: ms->drmmode.fb_id: 50 fb_id: 50
> > ...
> > 
> > $ xrandr --output DSI-1 --rotate normal
> > drmmode_shadow_destroy: cleared drmmode_crtc->rotate_fb_id
> > dispatch_dirty: ms->drmmode.fb_id: 0 fb_id: 0
> > dispatch_dirty: ms->drmmode.fb_id: 0 fb_id: 0
> > dispatch_dirty: ms->drmmode.fb_id: 0 fb_id: 0
> > drmmode_set_mode_major: drmmode->fb_id: 51
> > dispatch_dirty: ms->drmmode.fb_id: 51 fb_id: 51
> > ...
> > 
> > Cc: Hans De Goede 
> > Cc: Jason Ekstrand 
> > Cc: Laurent Pinchart 
> > Cc: Sebastian Reichel 
> > Cc: Tomi Valkeinen 
> > Signed-off-by: Tony Lindgren 
> > ---
> >  hw/xfree86/drivers/modesetting/drmmode_display.c | 10 ++
> >  hw/xfree86/drivers/modesetting/drmmode_display.h |  1 +
> >  2 files changed, 11 insertions(+)
> > 
> > diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c
> > b/hw/xfree86/drivers/modesetting/drmmode_display.c
> > --- a/hw/xfree86/drivers/modesetting/drmmode_display.c
> > +++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
> > @@ -997,6 +997,12 @@ drmmode_shadow_allocate(xf86CrtcPtr crtc, int width,
> > int height)
> >  return NULL;
> >  }
> >  
> > +/* Must have proper drmmode->fb_id for drmModeDirtyFB() */
> > +if (!drmmode->fb_id) {
> > +drmmode->fb_id = drmmode_crtc->rotate_fb_id;
> > +drmmode_crtc->reset_fb_id = TRUE;
> > +}
> > +
> >  #ifdef GLAMOR_HAS_GBM
> >  if (drmmode->gbm)
> >  return drmmode_crtc->rotate_bo.gbm;
> > @@ -1084,6 +1090,10 @@ drmmode_shadow_destroy(xf86CrtcPtr crtc, PixmapPtr
> > rotate_pixmap, void *data)
> >  
> >  if (data) {
> >  drmModeRmFB(drmmode->fd, drmmode_crtc->rotate_fb_id);
> > +if (drmmode_crtc->reset_fb_id &&
> > +drmmode->fb_id == drmmode_crtc->rotate_fb_id)
> > +drmmode->fb_id = 0;
> > +drmmode_crtc->reset_fb_id = FALSE;
> >  drmmode_crtc->rotate_fb_id = 0;
> >  
> >  drmmode_bo_destroy(drmmode, _crtc->rotate_bo);
> > diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.h
> > b/hw/xfree86/drivers/modesetting/drmmode_display.h
> > --- a/hw/xfree86/drivers/modesetting/drmmode_display.h
> > +++ b/hw/xfree86/drivers/modesetting/drmmode_display.h
> > @@ -98,6 +98,7 @@ typedef struct {
> >  
> >  drmmode_bo rotate_bo;
> >  unsigned rotate_fb_id;
> > +Bool reset_fb_id;
> >  
> >  PixmapPtr prime_pixmap;
> >  PixmapPtr prime_pixmap_back;
> -- 
> Cheers,
>   Lyude Paul
___
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