Re: using uinput connect X to proprietary (TCP based) keyboard endpoint

2014-10-23 Thread Aaron Plattner

On 10/16/2014 08:12 AM, Peter Hutterer wrote:

On Thu, Oct 16, 2014 at 04:48:37AM +0200, arne.ad...@t-online.de wrote:

Hi,
I am trying to integrate a proprietary keyboard, sending linux scancodes via 
TCP.
My idea is to use uinput to forward the received keycodes to locally running 
applications (including the x server).
In my xorg.conf I have the following section:

Section InputDevice
 # to enable user defined virtual keyboard
 Identifier Keyboard1
 Option Device /dev/input/event14
 Driver evdev
EndSection
where event14 is the event queue associated to the uinput simulated device.
I do see the scancodes sent from my device with both commands:
- xinput test-xi2 --root
-  showkey -s
However I am not able to intercept the keyboard events in this simple X 
application

int main(int argc, char** argv)
{
   Display* display = XOpenDisplay(NULL);
   Window window = XCreateSimpleWindow(display, RootWindow(display, 0), 1, 1, 
500, 500,
   0, BlackPixel(display, 0), 
BlackPixel(display, 0));
   XSelectInput(display, window, KeyPressMask | KeyReleaseMask);
   XMapWindow(display, window);



add a XFlush() here, that should do the trick.


XNextEvent implicitly flushes.


Cheers,
Peter


   XEvent report;
   while (1)
   {
 XNextEvent(display, report);
 switch (report.type)
 {
 case KeyRelease:
   printf(got a KeyRelease event: %d, %d\n, report.xkey.keycode, 
report.xkey.state);
   break;
 case KeyPress:
   printf(got a KeyPress event: %d, %d\n, report.xkey.keycode, 
report.xkey.state);
   break;
 default:
   printf(got a %d event\n, report.type);
   break;

 }
   }
   XFlush(display);
   sleep(5);
   return (EXIT_SUCCESS);
}


--
Aaron
___
xorg@lists.x.org: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: http://lists.x.org/mailman/listinfo/xorg
Your subscription address: %(user_address)s


kdrive udev/seat support

2014-10-23 Thread Steven Newbury
I'm adding udev/seat support to kdrive* in order to support running 
Xfbdev on a picolcdfb device (USB mono LCD + keys) as an auxiliary 
video display on which I'll run a graphical system monitor like Conky.

Right now I have basic -seat support working, when !seat0 vt switching 
is disabled and it uses the appropriate fb device according to udev.  
This is enough to get it working for me since I can now just start 
Xfbdev with the appropriate evdev for input, as I've not yet 
implemented seat based input device configuration.

Is there any interest in getting this upstream?  Shall I post the work 
done so far, or get the input device configuration finished first?

*I would have just used Xorg, but the fbdev driver doesn't support 
MONO01 visuals, it seemed easier to add the missing -seat support to 
kdrive.



signature.asc
Description: This is a digitally signed message part
___
xorg@lists.x.org: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: http://lists.x.org/mailman/listinfo/xorg
Your subscription address: %(user_address)s

Is this a hardware or a software problem?

2014-10-23 Thread Rivera Valdez
Hi, is it possible to know where (or which) is the source of the problem
from this info: http://pastebin.com/yX1W6jcx ?

Those are the logs of the moment when the OS (an updated debian on
a 10 years old pc) hanged and put me out of session (I had to re-log to
my user account). This has been passing for weeks, randomly, and usually
the system hangs and doesn't respond to nothing (Ctrl+Alt+F2, etx) so
you have to reboot.

Thanks a lot!
___
xorg@lists.x.org: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: http://lists.x.org/mailman/listinfo/xorg
Your subscription address: %(user_address)s


Re: tile property contents

2014-10-23 Thread Daniel Vetter
On Wed, Oct 22, 2014 at 04:03:21PM -0700, Andy Ritger wrote:
 On Wed, Oct 22, 2014 at 11:20:09PM +0200, Daniel Vetter wrote:
  On Wed, Oct 22, 2014 at 8:34 AM, Andy Ritger arit...@nvidia.com wrote:
   I assume the TILE property described below would be per-connector?
  
   It looks like this would handle the DP MST tiled display case.
  
   At the risk of trying to solve too much at once:
  
   There are also configurations where users configure multiple heads to
   drive power walls that they want to be treated as one logical monitor,
   similar to the DP MST tiled display case.  Normally, those powerwall
   configurations don't have any layout information from the monitors
   themselves, and the layout is configured by the user.
  
   Would it be appropriate for users to be able to set the TILE property
   in that sort of scenario?
  
   For the sake of generality, I wonder if max[hv]tiles and [hv]_tile_loc
   should be expressed in pixels rather than tiles?  Sometimes, the tiles
   in those powerwalls may not all have the same resolution, or may be
   configured with overlap.  I suppose that would make the TILE configuration
   specific to the current modetimings on each tile...
  
  Why can't users just set that mode?
 
 Sure, users can set the mode, but:
 
 * Part of what the TILE property conveys is how monitors should be grouped
   for purposes of window maximization.  Users don't have a great way to
   express that today, that I'm aware of.

My understanding for why we want the TILE property is to avoid to
duplicate displayId parsing over every bit of userspace (and the fbcon
stuff in the kernel) interested in it. Imo the proper way for userspace is
to always just inherit whatever modeset config is already there.

 * Users might configure the mode they want, but then gnome-settings-daemon
   may come along later and decide it knows better than the user how things
   should be configured.  One scenario where this comes up is:
 (a) user meticulously configures his power wall
 (b) user hotplugs another monitor
   I've definitely seen cases where window managers will try to be clever
   in response to a hotplug, and clobber the user's current configuration.
   If the TILE property conveyed how some set of monitors was supposed
   to be grouped, that would hopefully give window managers additional
   information, such that they would know to keep that group intact.

Well, imnsho gnome display control center is a bit too opiniated about
automatic modeset changes. If their assumption is that they always know
perfectly what the user wants upon hotplug I really don't want to work
around this in the kernel. Since for everything else than a laptop +
beamer gnome panel always pisses me off ;-)

I think gnome should just ask the user what it wants if there's more than
2 physical displays (treating a tiled 4k screen as one ofc), since there's
really no way at all to tell.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel


Re: [PATCH:font/util] Update map-JISX0201.1976-0 to current version from Unicode Consortium

2014-10-23 Thread Hans de Goede
Hi,

On 08/26/2014 04:06 AM, Alan Coopersmith wrote:
 New version is exactly as downloaded on August 25, 2014 from
 ftp://ftp.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0201.TXT
 
 Does not change mappings, only changes comments (including license notice).
 
 Reported-by: AGinsberg on #xorg-devel irc
 Signed-off-by: Alan Coopersmith alan.coopersm...@oracle.com

Looks good:

Acked-by: Hans de Goede hdego...@redhat.com

Regards,

Hans

 ---
  COPYING |2 +-
  map-JISX0201.1976-0 |   42 ++
  2 files changed, 27 insertions(+), 17 deletions(-)
 
 diff --git a/COPYING b/COPYING
 index 0ff9042..8febe74 100644
 --- a/COPYING
 +++ b/COPYING
 @@ -103,7 +103,7 @@ from the copyright holders.
  

  
 -Copyright (c) 1991-2003 Unicode, Inc.  All Rights reserved.
 +Copyright (c) 1991-2011 Unicode, Inc.  All Rights reserved.
  
  This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
  No claims are made as to fitness for any particular purpose.  No
 diff --git a/map-JISX0201.1976-0 b/map-JISX0201.1976-0
 index 87e9e94..ca18c42 100644
 --- a/map-JISX0201.1976-0
 +++ b/map-JISX0201.1976-0
 @@ -1,13 +1,11 @@
  #
  #Name: JIS X 0201 (1976) to Unicode 1.1 Table
  #Unicode version:  1.1
 -#Table version:0.9
 +#Table version:1.0
  #Table format: Format A
 -#Date: 8 March 1994
 -#Authors:  Glenn Adams gl...@metis.com
 -# John H. Jenkins john_jenk...@taligent.com
 +#Date: 2011 October 14
  #
 -#Copyright (c) 1991-1994 Unicode, Inc.  All Rights reserved.
 +#Copyright (c) 1994-2011 Unicode, Inc.  All Rights reserved.
  #
  #This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
  #No claims are made as to fitness for any particular purpose.  No
 @@ -17,17 +15,22 @@
  #remedy for any claim will be exchange of defective media within 90
  #days of receipt.
  #
 -#Recipient is granted the right to make copies in any form for
 -#internal distribution and to freely use the information supplied
 -#in the creation of products supporting Unicode.  Unicode, Inc.
 -#specifically excludes the right to re-distribute this file directly
 -#to third parties or other organizations whether for profit or not.
 +#  Unicode, Inc. hereby grants the right to freely use the information
 +#  supplied in this file in the creation of products supporting the
 +#  Unicode Standard, and to make copies of this file in any form for
 +#  internal or external distribution as long as this notice remains
 +#  attached.
  #
  #General notes:
  #
 -#This table contains the data the Unicode Consortium has on how
 -#single-byte JIS X 0201 characters map into Unicode 1.1
 -#(ISO/IEC 10646:1-1993 UCS-2).
 +#
 +# This table contains one set of mappings from JIS X 0201 into Unicode.
 +# Note that these data are *possible* mappings only and may not be the
 +# same as those used by actual products, nor may they be the best suited
 +# for all uses.  For more information on the mappings between various code
 +# pages incorporating the repertoire of JIS X 0201 and Unicode, consult the
 +# VENDORS mapping data.
 +#
  #
  #Format:  Three tab-separated columns
  #Column #1 is the shift JIS code (in hex as 0xXX)
 @@ -36,11 +39,18 @@
  #
  #The entries are in JIS order
  #
 -#   These mappings are provisional, pending definition of
 -#   official mappings by Japanese standards bodies.
 +#  Revision History:
 +#
 +#[v1.0, 2011 October 14]
 +#Updated terms of use to current wording.
 +#Updated contact information.
 +#No changes to the mapping data.
  #
 -#Any comments or problems, contact john_jenk...@taligent.com
 +#[v0.9, 8 March 1994]
 +#First release.
  #
 +#  Use the Unicode reporting form http://www.unicode.org/reporting.html
 +#for any questions or comments or to report errors in the data.
  #
  0x20 0x0020  # SPACE
  0x21 0x0021  # EXCLAMATION MARK
 
___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel


Re: [PATCH libXau] XauGet*AuthByAddr: add new variants which allow passing an explicit authorization file path.

2014-10-23 Thread Hans de Goede
Hi,

On 10/20/2014 02:19 PM, Laércio de Sousa wrote:
 It will allow extending functions like Xlib's XOpenDislay() or XCB's 
 xcb_connect()
 to allow passing an explicit authorization file path (they already allow 
 passing
 an explicit display number). This can be useful in exceptional cases where
 XAUTHORITY environment variable is not set at the time a X11 client is 
 launched.
 Currently, a X11 client that needs to connect to a display with a given
 authorization file needs to set XAUTHORITY itself (if not yet set) before 
 connecting.
 
 Signed-off-by: Laércio de Sousa laercioso...@sme-mogidascruzes.sp.gov.br

Code looks good to me and is:

Acked-by: Hans de Goede hdego...@redhat.com

I think this should get a second look by someone more familiar with the Xau code
though, so I'll leave merging this up to someone else.

Regards,

Hans

 ---
  AuGetAddr.c  | 38 --
  AuGetBest.c  | 36 +++--
  include/X11/Xauth.h  | 45 
 
  man/Xau.man  | 20 ++--
  man/XauGetAuthByAddrWithFile.man |  1 +
  man/XauGetBestAuthByAddrWithFile.man |  1 +
  6 files changed, 135 insertions(+), 6 deletions(-)
  create mode 100644 man/XauGetAuthByAddrWithFile.man
  create mode 100644 man/XauGetBestAuthByAddrWithFile.man
 
 diff --git a/AuGetAddr.c b/AuGetAddr.c
 index 6f5fe16..3aeffa4 100644
 --- a/AuGetAddr.c
 +++ b/AuGetAddr.c
 @@ -33,7 +33,8 @@ in this Software without prior written authorization from 
 The Open Group.
  #define binaryEqual(a, b, len) (memcmp(a, b, len) == 0)
  
  Xauth *
 -XauGetAuthByAddr (
 +XauGetAuthByAddrWithFile (
 +_Xconst char*auth_file,
  #if NeedWidePrototypes
  unsigned int family,
  unsigned int address_length,
 @@ -59,7 +60,7 @@ _Xconst char*   name)
  char*auth_name;
  Xauth   *entry;
  
 -auth_name = XauFileName ();
 +auth_name = auth_file ? auth_file : XauFileName ();
  if (!auth_name)
   return NULL;
  if (access (auth_name, R_OK) != 0)   /* checks REAL id */
 @@ -100,3 +101,36 @@ _Xconst char*name)
  (void) fclose (auth_file);
  return entry;
  }
 +
 +Xauth *
 +XauGetAuthByAddr (
 +#if NeedWidePrototypes
 +unsigned int family,
 +unsigned int address_length,
 +#else
 +unsigned short   family,
 +unsigned short   address_length,
 +#endif
 +_Xconst char*address,
 +#if NeedWidePrototypes
 +unsigned int number_length,
 +#else
 +unsigned short   number_length,
 +#endif
 +_Xconst char*number,
 +#if NeedWidePrototypes
 +unsigned int name_length,
 +#else
 +unsigned short   name_length,
 +#endif
 +_Xconst char*name)
 +{
 +XauGetAuthByAddrWithFile (NULL,
 +  family,
 +  address_length,
 +  address,
 +  number_length,
 +  number,
 +  name_length,
 +  name);
 +}
 diff --git a/AuGetBest.c b/AuGetBest.c
 index 5556559..73ee907 100644
 --- a/AuGetBest.c
 +++ b/AuGetBest.c
 @@ -41,7 +41,8 @@ in this Software without prior written authorization from 
 The Open Group.
  #define binaryEqual(a, b, len) (memcmp(a, b, len) == 0)
  
  Xauth *
 -XauGetBestAuthByAddr (
 +XauGetBestAuthByAddrWithFile (
 +_Xconst char*auth_file,
  #if NeedWidePrototypes
  unsigned int family,
  unsigned int address_length,
 @@ -71,7 +72,7 @@ XauGetBestAuthByAddr (
  unsigned short   fully_qual_address_length;
  #endif
  
 -auth_name = XauFileName ();
 +auth_name = auth_file ? auth_file : XauFileName ();
  if (!auth_name)
   return NULL;
  if (access (auth_name, R_OK) != 0)   /* checks REAL id */
 @@ -161,3 +162,34 @@ XauGetBestAuthByAddr (
  (void) fclose (auth_file);
  return best;
  }
 +
 +Xauth *
 +XauGetBestAuthByAddr (
 +#if NeedWidePrototypes
 +unsigned int family,
 +unsigned int address_length,
 +#else
 +unsigned short   family,
 +unsigned short   address_length,
 +#endif
 +_Xconst char*address,
 +#if NeedWidePrototypes
 +unsigned int number_length,
 +#else
 +unsigned short   number_length,
 +#endif
 +_Xconst char*number,
 +int  types_length,
 +char**   types,
 +_Xconst int* type_lengths)
 +{
 +XauGetBestAuthByAddrWithFile (NULL,
 +  family,
 +  address_length,
 +  address,
 +  number_length,
 +  number,
 +  types_length,
 +  types,
 +  type_lengths);
 +}
 diff --git a/include/X11/Xauth.h b/include/X11/Xauth.h
 index 

[PATCH font/encodings] jisx0201.1976-0.enc: Add undefined mapping for 0x7f - 0xa0 range

2014-10-23 Thread Hans de Goede
From: Akira TAGOH ta...@redhat.com

The jisx0201 encoding has a hole in it in the 0x7f - 0xa0 range, see:
http://en.wikipedia.org/wiki/JIS_X_0201

The document for the format of the encoding files says:
Codes not listed are assumed to map through the identity (i.e. to the same
 numerical value). In order to override this default mapping, you may specify
 a range of codes to be undefined by using an `UNDEFINE' line

jisx0201.1976-0.enc was not doing this, causing all the codes on the range
to be mapped 1:1. This specifically is causing problems for ttmkfdir, which
checks that a font covers (most of) an encoding before adding a line for that
encoding to fonts.scale, and the hole not properly being undefined causes
this check to fail for atleast the Sazanami fonts.

Cc: Akira TAGOH ta...@redhat.com
BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1009350
Signed-off-by: Hans de Goede hdego...@redhat.com
---
 large/jisx0201.1976-0.enc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/large/jisx0201.1976-0.enc b/large/jisx0201.1976-0.enc
index 915d50c..328bc7a 100644
--- a/large/jisx0201.1976-0.enc
+++ b/large/jisx0201.1976-0.enc
@@ -68,6 +68,7 @@ ENDMAPPING
 STARTMAPPING unicode
 0x5C   0x00A5  # YEN SIGN
 0x7E   0x203E  # OVERLINE
+UNDEFINE   0x7F0xA0
 0x00A1 0x00DF 0xFF61
 ENDMAPPING
 STARTMAPPING cmap 1 1
-- 
2.1.0

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


[PATCH 2/4] xwayland: Implement the wl_touch interface

2014-10-23 Thread Carlos Garnacho
A DeviceIntPtr with touch valuators is also created in order to deliver
the translated touch events. The lifetime of xwl_touch structs is tied
to the wayland ones, finishing in either wl_touch.up() or wl_touch.cancel()

Signed-off-by: Carlos Garnacho carl...@gnome.org
---
 hw/xwayland/xwayland-input.c | 206 ++-
 hw/xwayland/xwayland.h   |   2 +
 2 files changed, 205 insertions(+), 3 deletions(-)

diff --git a/hw/xwayland/xwayland-input.c b/hw/xwayland/xwayland-input.c
index b661921..0aead8f 100644
--- a/hw/xwayland/xwayland-input.c
+++ b/hw/xwayland/xwayland-input.c
@@ -139,6 +139,61 @@ xwl_keyboard_proc(DeviceIntPtr device, int what)
 return BadMatch;
 }
 
+static int
+xwl_touch_proc(DeviceIntPtr device, int what)
+{
+#define NTOUCHPOINTS 20
+#define NBUTTONS 1
+#define NAXES 2
+struct xwl_seat *xwl_seat = device-public.devicePrivate;
+Atom btn_labels[NBUTTONS] = { 0 };
+Atom axes_labels[NAXES] = { 0 };
+BYTE map[NBUTTONS + 1] = { 0 };
+
+switch (what) {
+case DEVICE_INIT:
+device-public.on = FALSE;
+
+axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_MT_POSITION_X);
+axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_MT_POSITION_Y);
+
+if (!InitValuatorClassDeviceStruct(device, NAXES, axes_labels,
+   GetMotionHistorySize(), Absolute))
+return BadValue;
+
+if (!InitButtonClassDeviceStruct(device, NBUTTONS, btn_labels, map))
+return BadValue;
+
+if (!InitTouchClassDeviceStruct(device, NTOUCHPOINTS,
+XIDirectTouch, NAXES))
+return BadValue;
+
+/* Valuators */
+/* FIXME: devices might be mapped to a single wl_output */
+InitValuatorAxisStruct(device, 0, axes_labels[0],
+   0, xwl_seat-xwl_screen-width,
+   1, 0, 1, Absolute);
+InitValuatorAxisStruct(device, 1, axes_labels[1],
+   0, xwl_seat-xwl_screen-height,
+   1, 0, 1, Absolute);
+return Success;
+
+case DEVICE_ON:
+device-public.on = TRUE;
+return Success;
+
+case DEVICE_OFF:
+case DEVICE_CLOSE:
+device-public.on = FALSE;
+return Success;
+}
+
+return BadMatch;
+#undef NAXES
+#undef NBUTTONS
+#undef NTOUCHPOINTS
+}
+
 static void
 pointer_handle_enter(void *data, struct wl_pointer *pointer,
  uint32_t serial, struct wl_surface *surface,
@@ -471,6 +526,129 @@ static const struct wl_keyboard_listener 
keyboard_listener = {
 keyboard_handle_modifiers,
 };
 
+static struct xwl_touch *
+xwl_seat_lookup_touch(struct xwl_seat *xwl_seat, int32_t id)
+{
+struct xwl_touch *xwl_touch, *next_xwl_touch;
+
+xorg_list_for_each_entry_safe(xwl_touch, next_xwl_touch,
+  xwl_seat-touches, link_touch) {
+if (xwl_touch-id == id)
+return xwl_touch;
+}
+
+return NULL;
+}
+
+static void
+xwl_touch_send_event(struct xwl_touch *xwl_touch,
+ struct xwl_seat *xwl_seat, int type)
+{
+int32_t dx, dy;
+ValuatorMask mask;
+
+dx = xwl_touch-window-window-drawable.x;
+dy = xwl_touch-window-window-drawable.y;
+
+valuator_mask_zero(mask);
+valuator_mask_set(mask, 0, dx + xwl_touch-x);
+valuator_mask_set(mask, 1, dy + xwl_touch-y);
+QueueTouchEvents(xwl_seat-touch, type, xwl_touch-id, 0, mask);
+}
+
+static void
+touch_handle_down(void *data, struct wl_touch *wl_touch,
+  uint32_t serial, uint32_t time,
+  struct wl_surface *surface,
+  int32_t id, wl_fixed_t sx_w, wl_fixed_t sy_w)
+{
+struct xwl_seat *xwl_seat = data;
+struct xwl_touch *xwl_touch;
+
+if (surface == NULL)
+return;
+
+xwl_touch = calloc(sizeof *xwl_touch, 1);
+if (xwl_touch == NULL) {
+ErrorF(touch_handle_down ENOMEM);
+return;
+}
+
+xwl_touch-window = wl_surface_get_user_data(surface);
+xwl_touch-id = id;
+xwl_touch-x = wl_fixed_to_int(sx_w);
+xwl_touch-y = wl_fixed_to_int(sy_w);
+xorg_list_add(xwl_touch-link_touch, xwl_seat-touches);
+
+xwl_touch_send_event(xwl_touch, xwl_seat, XI_TouchBegin);
+}
+
+static void
+touch_handle_up(void *data, struct wl_touch *wl_touch,
+uint32_t serial, uint32_t time, int32_t id)
+{
+struct xwl_touch *xwl_touch;
+struct xwl_seat *xwl_seat = data;
+
+xwl_touch = xwl_seat_lookup_touch(xwl_seat, id);
+
+if (!xwl_touch)
+return;
+
+xwl_touch_send_event(xwl_touch, xwl_seat, XI_TouchEnd);
+xorg_list_del(xwl_touch-link_touch);
+free(xwl_touch);
+}
+
+static void
+touch_handle_motion(void *data, struct wl_touch *wl_touch,
+uint32_t time, int32_t id,
+wl_fixed_t sx_w, wl_fixed_t sy_w)
+{
+   

[PATCH 3/4] xwayland: Remove related touchpoints when unrealizing windows

2014-10-23 Thread Carlos Garnacho
These sequences are forgotten to all purposes.

Signed-off-by: Carlos Garnacho carl...@gnome.org
---
 hw/xwayland/xwayland-input.c | 14 ++
 hw/xwayland/xwayland.c   |  6 +++---
 hw/xwayland/xwayland.h   |  2 ++
 3 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/hw/xwayland/xwayland-input.c b/hw/xwayland/xwayland-input.c
index 0aead8f..4f39032 100644
--- a/hw/xwayland/xwayland-input.c
+++ b/hw/xwayland/xwayland-input.c
@@ -870,6 +870,20 @@ xwl_xy_to_window(ScreenPtr screen, SpritePtr sprite, int 
x, int y)
 }
 
 void
+xwl_seat_clear_touch(struct xwl_seat *xwl_seat, WindowPtr window)
+{
+struct xwl_touch *xwl_touch, *next_xwl_touch;
+
+xorg_list_for_each_entry_safe(xwl_touch, next_xwl_touch,
+  xwl_seat-touches, link_touch) {
+if (xwl_touch-window-window == window) {
+xorg_list_del(xwl_touch-link_touch);
+free(xwl_touch);
+}
+}
+}
+
+void
 InitInput(int argc, char *argv[])
 {
 ScreenPtr pScreen = screenInfo.screens[0];
diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c
index 9132969..f532ebc 100644
--- a/hw/xwayland/xwayland.c
+++ b/hw/xwayland/xwayland.c
@@ -287,10 +287,10 @@ xwl_unrealize_window(WindowPtr window)
 xwl_screen = xwl_screen_get(screen);
 
 xorg_list_for_each_entry(xwl_seat, xwl_screen-seat_list, link) {
-if (!xwl_seat-focus_window)
-continue;
-if (xwl_seat-focus_window-window == window)
+if (xwl_seat-focus_window  xwl_seat-focus_window-window == window)
 xwl_seat-focus_window = NULL;
+
+xwl_seat_clear_touch(xwl_seat, window);
 }
 
 screen-UnrealizeWindow = xwl_screen-UnrealizeWindow;
diff --git a/hw/xwayland/xwayland.h b/hw/xwayland/xwayland.h
index 537cfbc..5a82103 100644
--- a/hw/xwayland/xwayland.h
+++ b/hw/xwayland/xwayland.h
@@ -162,6 +162,8 @@ void xwl_seat_set_cursor(struct xwl_seat *xwl_seat);
 
 void xwl_seat_destroy(struct xwl_seat *xwl_seat);
 
+void xwl_seat_clear_touch(struct xwl_seat *xwl_seat, WindowPtr window);
+
 Bool xwl_screen_init_output(struct xwl_screen *xwl_screen);
 
 struct xwl_output *xwl_output_create(struct xwl_screen *xwl_screen,
-- 
2.1.0

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


[PATCH xwayland 0/4] Implement wl_touch

2014-10-23 Thread Carlos Garnacho
Hi!,

Here's a few patches that add touch event support to xwayland. It has
still a FIXME around device range/resolution if a non-identity matrix
applies, which I'm a bit unsure how to handle.

But this makes things work for the most common cases, which is an
improvement to the status quo.

Cheers,
  Carlos

 hw/xwayland/xwayland-input.c | 298 ---
 hw/xwayland/xwayland.c   |   6 +-
 hw/xwayland/xwayland.h   |  13 ++
 3 files changed, 298 insertions(+), 19 deletions(-)

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


[PATCH 1/4] xwayland: Add xwl_touch struct

2014-10-23 Thread Carlos Garnacho
This struct holds information about each individual, ongoing touchpoint.
A list of these is held by the xwl_seat.

Signed-off-by: Carlos Garnacho carl...@gnome.org
---
 hw/xwayland/xwayland-input.c | 10 ++
 hw/xwayland/xwayland.h   |  9 +
 2 files changed, 19 insertions(+)

diff --git a/hw/xwayland/xwayland-input.c b/hw/xwayland/xwayland-input.c
index b8c543c..b661921 100644
--- a/hw/xwayland/xwayland-input.c
+++ b/hw/xwayland/xwayland-input.c
@@ -576,11 +576,21 @@ create_input_device(struct xwl_screen *xwl_screen, 
uint32_t id)
 xwl_seat-cursor = wl_compositor_create_surface(xwl_screen-compositor);
 wl_seat_add_listener(xwl_seat-seat, seat_listener, xwl_seat);
 wl_array_init(xwl_seat-keys);
+
+xorg_list_init(xwl_seat-touches);
 }
 
 void
 xwl_seat_destroy(struct xwl_seat *xwl_seat)
 {
+struct xwl_touch *xwl_touch, *next_xwl_touch;
+
+xorg_list_for_each_entry_safe(xwl_touch, next_xwl_touch,
+  xwl_seat-touches, link_touch) {
+xorg_list_del(xwl_touch-link_touch);
+free(xwl_touch);
+}
+
 RemoveDevice(xwl_seat-pointer, FALSE);
 RemoveDevice(xwl_seat-keyboard, FALSE);
 wl_seat_destroy(xwl_seat-seat);
diff --git a/hw/xwayland/xwayland.h b/hw/xwayland/xwayland.h
index bfffa71..3920e01 100644
--- a/hw/xwayland/xwayland.h
+++ b/hw/xwayland/xwayland.h
@@ -107,6 +107,13 @@ struct xwl_window {
 
 #define MODIFIER_META 0x01
 
+struct xwl_touch {
+struct xwl_window *window;
+int32_t id;
+int x, y;
+struct xorg_list link_touch;
+};
+
 struct xwl_seat {
 DeviceIntPtr pointer;
 DeviceIntPtr keyboard;
@@ -122,6 +129,8 @@ struct xwl_seat {
 struct xorg_list link;
 CursorPtr x_cursor;
 
+struct xorg_list touches;
+
 wl_fixed_t horizontal_scroll;
 wl_fixed_t vertical_scroll;
 uint32_t scroll_time;
-- 
2.1.0

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


[PATCH 4/4] xwayland: Make the XYToWindowProc implementation aware of touchpoints

2014-10-23 Thread Carlos Garnacho
For these, we must first lookup the DIX sequence from the Sprite, we can
then lookup the DDX ID/xwl_touch from xwayland's touch device.

Signed-off-by: Carlos Garnacho carl...@gnome.org
---
 hw/xwayland/xwayland-input.c | 68 +++-
 1 file changed, 55 insertions(+), 13 deletions(-)

diff --git a/hw/xwayland/xwayland-input.c b/hw/xwayland/xwayland-input.c
index 4f39032..2d3192f 100644
--- a/hw/xwayland/xwayland-input.c
+++ b/hw/xwayland/xwayland-input.c
@@ -838,29 +838,71 @@ DDXRingBell(int volume, int pitch, int duration)
 {
 }
 
-static WindowPtr
-xwl_xy_to_window(ScreenPtr screen, SpritePtr sprite, int x, int y)
+static int32_t
+lookup_sprite_touch_client_id (SpritePtr sprite)
 {
-struct xwl_seat *xwl_seat = NULL;
 DeviceIntPtr device;
+int i;
 
 for (device = inputInfo.devices; device; device = device-next) {
-if (device-deviceProc == xwl_pointer_proc 
-device-spriteInfo-sprite == sprite) {
-xwl_seat = device-public.devicePrivate;
-break;
+if (!device-touch)
+continue;
+
+for (i = 0; i  device-touch-num_touches; i++) {
+TouchPointInfoPtr ti = device-touch-touches + i;
+
+if (sprite == ti-sprite)
+return ti-client_id;
 }
 }
 
-if (xwl_seat == NULL) {
-/* XTEST device */
-sprite-spriteTraceGood = 1;
-return sprite-spriteTrace[0];
+return 0;
+}
+
+static struct xwl_touch *
+xwl_touch_lookup_from_client_id (struct xwl_seat *xwl_seat, int32_t client_id)
+{
+DeviceIntPtr touch = xwl_seat-touch;
+int i;
+
+for (i = 0; i  touch-last.num_touches; i++) {
+DDXTouchPointInfoPtr ddx_ti = touch-last.touches + i;
+
+if (ddx_ti-client_id == client_id)
+return xwl_seat_lookup_touch(xwl_seat, ddx_ti-ddx_id);
+}
+
+return NULL;
+}
+
+static WindowPtr
+xwl_xy_to_window(ScreenPtr screen, SpritePtr sprite, int x, int y)
+{
+struct xwl_screen *xwl_screen;
+struct xwl_seat *xwl_seat = NULL;
+struct xwl_window *xwl_window = NULL;
+struct xwl_touch *xwl_touch;
+int32_t client_id;
+
+xwl_screen = xwl_screen_get(screen);
+
+xorg_list_for_each_entry(xwl_seat, xwl_screen-seat_list, link) {
+if (xwl_seat-pointer-spriteInfo-sprite == sprite) {
+xwl_window = xwl_seat-focus_window;
+} else if ((client_id = lookup_sprite_touch_client_id (sprite)) != 0) {
+xwl_touch = xwl_touch_lookup_from_client_id (xwl_seat, client_id);
+
+if (xwl_touch)
+xwl_window = xwl_touch-window;
+}
+
+if (xwl_window)
+break;
 }
 
-if (xwl_seat-focus_window) {
+if (xwl_window) {
 sprite-spriteTraceGood = 2;
-sprite-spriteTrace[1] = xwl_seat-focus_window-window;
+sprite-spriteTrace[1] = xwl_window-window;
 return miSpriteTrace(sprite, x, y);
 }
 else {
-- 
2.1.0

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


Re: [PATCH] composite: Wrap GetSpans

2014-10-23 Thread Adam Jackson
On Wed, 2014-10-22 at 13:37 -0700, Keith Packard wrote:
 Adam Jackson a...@redhat.com writes:
 
  GetSpans should flush composition from children to parent, just like
  GetImage and SourceValidate.  Fortunately no one is likely to have
  noticed, since to hit this you're already deep into failure town.
 
 In the core server code, GetSpans is only used for miCopyArea,
 miCopyPlane, miGetImage and miPushPixels. miPushPixels isn't relevant as
 it is only ever used to read from pixmaps. The others are already
 covered by the existing SourceValidate and GetImage wrappers.

I'm not sure this is true?  ProcCopyArea doesn't call SourceValidate.
fbCopyArea does (by way of miDoCopy), but miCopyArea does not, in fact
there's no calls to SourceValidate in mibitblt at all.  So if you found
yourself on the span routines and wanted to take a screenshot, GetImage
would work (because composite wraps it) but CopyArea to a shm pixmap
would not, the child-to-parent paint wouldn't get triggered and you'd
get stale contents.

If we fixed mibitblt (and fbGetImage) to call SourceValidate, then I
think we could remove misprite's GetImage and GetSpans wrappers, since
SourceValidate would be sufficient.  And I think we could remove
compGetImage too for the same reason.  I guess we could argue about
whether to do the SourceValidate at the top in dix or at the bottom in
mi/fb/etc.

Obviously this wouldn't address the other direction of rendering with
IncludeInferiors to a redirected child, but it'd still be bugfix by
deletion.

- ajax

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


Re: [PATCH] xinerama: Fix access mode in GetImage's drawable lookup

2014-10-23 Thread Keith Packard
Julien Cristau jcris...@debian.org writes:

 On Wed, Oct  8, 2014 at 17:18:32 +0200, Adam Jackson wrote:

 Signed-off-by: Adam Jackson a...@redhat.com
 ---
  Xext/panoramiXprocs.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 Reviewed-by: Julien Cristau jcris...@debian.org

Merged.
   942e18e..3f4edd2  master - master

-- 
keith.pack...@intel.com


pgpFvFaXcGdcT.pgp
Description: PGP signature
___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Re: [PATCH 2/2] dix: Always store GC client clip as a region

2014-10-23 Thread Keith Packard
Adam Jackson a...@redhat.com writes:


  static Bool exaFillRegionSolid(DrawablePtr pDrawable, RegionPtr pRegion,
 Pixel pixel, CARD32 planemask, CARD32 alu,
 -   unsigned int clientClipType);
 +   Bool clientClip);

Using clientClip as the name for a boolean seems likely to lead to
confusion with the usual usage of that name. Perhaps 'hasClientClip'?

void
  xnestDestroyClip(GCPtr pGC)
  {
 -xnestDestroyClipHelper(pGC);
 -
 +RegionDestroy(pGC-clientClip);

Need to check for NULL before calling RegionDestroy:

@@ -276,9 +276,11 @@ xnestChangeClip(GCPtr pGC, int type, void *pValue, int 
nRects)
 void
 xnestDestroyClip(GCPtr pGC)
 {
-RegionDestroy(pGC-clientClip);
-XSetClipMask(xnestDisplay, xnestGC(pGC), None);
-pGC-clientClip = NULL;
+if (pGC-clientClip) {
+RegionDestroy(pGC-clientClip);
+XSetClipMask(xnestDisplay, xnestGC(pGC), None);
+pGC-clientClip = NULL;
+}
 }


The rest of this patch has been

Reviewed-by: Keith Packard kei...@keithp.com

-- 
keith.pack...@intel.com


pgpOPkOW9l6cr.pgp
Description: PGP signature
___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Re: [PATCH 1/2] render: Always store client clip as a region

2014-10-23 Thread Keith Packard
Adam Jackson a...@redhat.com writes:

 This does have one semantic change.  FixesCreateRegionFromPicture used to
 throw BadImplementation if you tried to create a region from a picture
 with no client clip.  I changed that to BadMatch here since that more
 honestly describes what's going on.

 Signed-off-by: Adam Jackson a...@redhat.com

Reviewed and merged.
   3f4edd2..462bf87  master - master

-- 
keith.pack...@intel.com


pgpTvQ9aFNxXe.pgp
Description: PGP signature
___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Re: [PATCH 0/4] Finish killing VidMemInfo

2014-10-23 Thread Keith Packard
Mark Kettenis mark.kette...@xs4all.nl writes:

 From: Adam Jackson a...@redhat.com
 Date: Wed,  8 Oct 2014 17:38:55 +0200
 
 This finishes the job from:
 
 http://lists.freedesktop.org/archives/xorg-devel/2014-July/043343.html
 
 OpenBSD retains its special case for privsep setup, but otherwise this is
 the same as before.

 Please give me a chance to properly review and test this.  Was
 travelling last week.

I'd love to get this merged; have you had a chance to review this yet?

-- 
keith.pack...@intel.com


pgpP0NviJbCeq.pgp
Description: PGP signature
___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Re: [PULL] xwin engine removal

2014-10-23 Thread Keith Packard
Adam Jackson a...@nwnk.net writes:

 Adam Jackson (2):
   xwin: Remove native GDI engine (v2)
   xwin: Remove primary DirectDraw engine

Merged.
   462bf87..de55aaf  master - master

-- 
keith.pack...@intel.com


pgp0o8Vz6Bees.pgp
Description: PGP signature
___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Re: [PATCH] mi: Mark the span blit routines as _X_COLD

2014-10-23 Thread Keith Packard
Adam Jackson a...@redhat.com writes:

 On gcc, __attribute__((cold)) means:

 - consider calls to the function to be unlikely for branch prediction
 - optimize the function for size
 - emit the function in a dedicated cold text section

 It's not worth deleting these routines even though there are no longer
 in-tree consumers, but we can at least keep them out of i$ at runtime.

 Signed-off-by: Adam Jackson a...@redhat.com

Reviewed and merged.
   de55aaf..cffd4e4  master - master

-- 
keith.pack...@intel.com


pgpmgkMHy9zGm.pgp
Description: PGP signature
___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Re: [PATCH 2/2] If fork fails in System(), don't fallthrough to exec()

2014-10-23 Thread Keith Packard
Alan Coopersmith alan.coopersm...@oracle.com writes:

 Signed-off-by: Alan Coopersmith alan.coopersm...@oracle.com

Both of these have been merged.
   cffd4e4..16a32c5  master - master

-- 
keith.pack...@intel.com


pgpwf4BC9Zb_z.pgp
Description: PGP signature
___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Crash in X server [with Patch]

2014-10-23 Thread Andreas Hartmetz
Hello,

(I am not subscrided)

it looks like 6e50bfa706cd3ab884c933bf1f17c221a6208aa4 in
xserver is faulty. The X server used to crash every couple of hours 
here, with backtraces as follows (some other messages included for 
context):

[54.054] (II) RADEON(0): Modeline 1280x1024x0.0  108.00  1280 1328 
1440 1688  1024 1025 1028 1066 +hsync +vsync (64.0 kHz e)
[54.054] (II) RADEON(0): Modeline 1440x900x0.0   88.75  1440 1488 
1520 1600  900 903 909 926 +hsync -vsync (55.5 kHz e)
[54.054] (II) RADEON(0): Modeline 1600x1200x0.0  162.00  1600 1664 
1856 2160  1200 1201 1204 1250 +hsync +vsync (75.0 kHz e)
[54.054] (II) RADEON(0): Modeline 1680x1050x0.0  119.00  1680 1728 
1760 1840  1050 1053 1059 1080 +hsync -vsync (64.7 kHz e)
[54.054] (II) RADEON(0): Modeline 1920x1080x60.0  172.80  1920 
2040 2248 2576  1080 1081 1084 1118 -hsync +vsync (67.1 kHz e)
[81.990] (WW) RADEON(0): radeon_dri2_flip_event_handler: Pageflip 
completion event has impossible msc 4758  target_msc 4759
[   265.465] (WW) RADEON(0): radeon_dri2_flip_event_handler: Pageflip 
completion event has impossible msc 15748  target_msc 15749
[   425.104] (WW) RADEON(0): radeon_dri2_flip_event_handler: Pageflip 
completion event has impossible msc 25311  target_msc 25312
[   425.120] (WW) RADEON(0): radeon_dri2_flip_event_handler: Pageflip 
completion event has impossible msc 25311  target_msc 25312
[   761.224] (WW) RADEON(0): radeon_dri2_flip_event_handler: Pageflip 
completion event has impossible msc 45446  target_msc 45447
[   972.308] (WW) RADEON(0): radeon_dri2_flip_event_handler: Pageflip 
completion event has impossible msc 58091  target_msc 58092
[   989.809] (EE) 
[   989.809] (EE) Backtrace:
[   989.813] (EE) 0: /opt/xorg/bin/Xorg (OsSigHandler+0x29) [0x594149]
[   989.815] (EE) 1: /lib/x86_64-linux-gnu/libpthread.so.0 
(__restore_rt+0x0) [0x7f4df0db7c8f]
[   989.816] (EE) 2: /lib/x86_64-linux-gnu/libc.so.6 (strerror_l+0x6a0) 
[0x7f4df0a7c080]
[   989.821] (EE) 3: /opt/xorg/lib/dri/radeonsi_dri.so 
(memcpy_texture.isra.1+0x166) [0x7f4deb94fcc6]
[   989.825] (EE) 4: /opt/xorg/lib/dri/radeonsi_dri.so 
(_mesa_texstore+0x457) [0x7f4deb950927]
[   989.830] (EE) 5: /opt/xorg/lib/dri/radeonsi_dri.so 
(store_texsubimage+0x1ba) [0x7f4deb9514ea]
[   989.835] (EE) 6: /opt/xorg/lib/dri/radeonsi_dri.so 
(st_TexSubImage+0x10f) [0x7f4deb9a7b5f]
[   989.841] (EE) 7: /opt/xorg/lib/dri/radeonsi_dri.so 
(texsubimage+0x477) [0x7f4deb940817]
[   989.847] (EE) 8: /opt/xorg/lib/dri/radeonsi_dri.so 
(_mesa_TexSubImage2D+0x3f) [0x7f4deb9447ff]
[   989.853] (EE) 9: /opt/xorg/lib/xorg/modules/libglamoregl.so 
(__glamor_upload_pixmap_to_texture+0x1de) [0x7f4def40894e]
[   989.855] (EE) 10: /opt/xorg/lib/xorg/modules/libglamoregl.so 
(_glamor_upload_bits_to_pixmap_texture+0x2b9) [0x7f4def408e49]
[   989.857] (EE) 11: /opt/xorg/lib/xorg/modules/libglamoregl.so 
(glamor_upload_sub_pixmap_to_texture+0x4c9) [0x7f4def409f79]
[   989.858] (EE) 12: /opt/xorg/lib/xorg/modules/libglamoregl.so 
(glamor_upload_pixmap_to_texture+0x63) [0x7f4def40ad13]
[   989.860] (EE) 13: /opt/xorg/lib/xorg/modules/libglamoregl.so 
(glamor_composite_choose_shader+0xfa4) [0x7f4def3fb724]
[   989.862] (EE) 14: /opt/xorg/lib/xorg/modules/libglamoregl.so 
(glamor_composite_with_shader+0xce) [0x7f4def3fb9be]
[   989.864] (EE) 15: /opt/xorg/lib/xorg/modules/libglamoregl.so 
(glamor_composite_clipped_region+0x46c) [0x7f4def3fcaac]
[   989.867] (EE) 16: /opt/xorg/lib/xorg/modules/libglamoregl.so 
(_glamor_composite+0x7ac) [0x7f4def3fd7ac]
[   989.869] (EE) 17: /opt/xorg/lib/xorg/modules/libglamoregl.so 
(glamor_composite+0x3b) [0x7f4def3fdcab]
[   989.870] (EE) 18: /opt/xorg/bin/Xorg (damageComposite+0x141) 
[0x516d51]
[   989.872] (EE) 19: /opt/xorg/lib/xorg/modules/libglamoregl.so 
(glamor_trapezoids+0x2d6) [0x7f4def4069d6]
[   989.873] (EE) 20: /opt/xorg/bin/Xorg (ProcRenderTrapezoids+0x16c) 
[0x50d6cc]
[   989.873] (EE) 21: /opt/xorg/bin/Xorg (Dispatch+0x277) [0x438167]
[   989.873] (EE) 22: /opt/xorg/bin/Xorg (dix_main+0x3db) [0x43c30b]
[   989.876] (EE) 23: /lib/x86_64-linux-gnu/libc.so.6 
(__libc_start_main+0xf5) [0x7f4df0a04ec5]
[   989.876] (EE) 24: /opt/xorg/bin/Xorg (_start+0x29) [0x42679e]
[   989.878] (EE) 25: ? (?+0x29) [0x29]
[   989.879] (EE) 
[   989.879] (EE) Segmentation fault at address 0x7f4de1950010
[   989.879] (EE) 
Fatal server error:
[   989.879] (EE) Caught signal 11 (Segmentation fault). Server aborting

The proposed fix is:

commit bbcc084afc1396d3df42516baafea5839c95a488
Author: Andreas Hartmetz ahartm...@gmail.com
Date:   Sat Oct 4 18:13:04 2014 +0200

glamor: Don't free memory we are going to use.

glamor_color_convert_to_bits() returns its second argument on
success, NULL on error, and need_free_bits already makes sure that
bits aliasing converted_bits is freed in the success case. 
Looks like the memory leak that was supposed to be fixed in
6e50bfa706cd3ab884c933bf1f17c221a6208aa4 only occurred in the error
   

Re: Crash in X server [with Patch]

2014-10-23 Thread Michel Dänzer

On 24.10.2014 07:09, Andreas Hartmetz wrote:


commit bbcc084afc1396d3df42516baafea5839c95a488
Author: Andreas Hartmetz ahartm...@gmail.com
Date:   Sat Oct 4 18:13:04 2014 +0200

 glamor: Don't free memory we are going to use.

 glamor_color_convert_to_bits() returns its second argument on
 success, NULL on error, and need_free_bits already makes sure that
 bits aliasing converted_bits is freed in the success case.
 Looks like the memory leak that was supposed to be fixed in
 6e50bfa706cd3ab884c933bf1f17c221a6208aa4 only occurred in the error
 case.

diff --git a/glamor/glamor_pixmap.c b/glamor/glamor_pixmap.c
index 355fe4b..7c9bf26 100644
--- a/glamor/glamor_pixmap.c
+++ b/glamor/glamor_pixmap.c
@@ -774,8 +774,8 @@ _glamor_upload_bits_to_pixmap_texture(PixmapPtr
pixmap, GLenum format,
  return FALSE;
  bits = glamor_color_convert_to_bits(bits, converted_bits, w, h,
  stride, no_alpha, revert,
swap_rb);
-free(converted_bits);
  if (bits == NULL) {
+free(converted_bits);
  ErrorF(Failed to convert pixmap no_alpha %d,
 revert mode %d, swap mode %d\n, no_alpha, revert,
swap_rb);
  return FALSE;

I've already, a week or two ago, sent this to Michel a who reviewed it
(no idea how to forward that, guess I'll need another review from
whoever volunteers) and OK'd it.


You could have just submitted the patch with my

Reviewed-by: Michel Dänzer michel.daen...@amd.com

to this list and to Keith Packard (Cc'd, though that probably won't be 
visible in my post as distributed by the list), as I suggested. :)



--
Earthling Michel Dänzer|  http://www.amd.com
Libre software enthusiast  |Mesa and X developer
___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel


Re: [PATCH] composite: Wrap GetSpans

2014-10-23 Thread Keith Packard
Adam Jackson a...@redhat.com writes:

 I'm not sure this is true?  ProcCopyArea doesn't call SourceValidate.
 fbCopyArea does (by way of miDoCopy), but miCopyArea does not, in fact
 there's no calls to SourceValidate in mibitblt at all.

Yeah, I completely missed that.

 So if you found
 yourself on the span routines and wanted to take a screenshot, GetImage
 would work (because composite wraps it) but CopyArea to a shm pixmap
 would not, the child-to-parent paint wouldn't get triggered and you'd
 get stale contents.

 If we fixed mibitblt (and fbGetImage) to call SourceValidate, then I
 think we could remove misprite's GetImage and GetSpans wrappers, since
 SourceValidate would be sufficient.  And I think we could remove
 compGetImage too for the same reason.  I guess we could argue about
 whether to do the SourceValidate at the top in dix or at the bottom in
 mi/fb/etc.

Hrm. Doing it at the DIX level would rather change how software cursors
work; right now, all rendering hits the software cursor pull-down code,
even stuff which doesn't go directly through the DIX level.

 Obviously this wouldn't address the other direction of rendering with
 IncludeInferiors to a redirected child, but it'd still be bugfix by
 deletion.

At this point, it seems easiest to just take your GetSpans patch as a
pure bugfix and consider whether to use SourceValidate in the future,
and whether to push that up to DIX or leave it down at the bottom of the
rendering stack...

-- 
keith.pack...@intel.com


pgpnBIGvjaJut.pgp
Description: PGP signature
___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

[Bug 85385] New: corrupt desktop - at and after login

2014-10-23 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=85385

Bug ID: 85385
   Summary: corrupt desktop - at and after login
   Product: xorg
   Version: unspecified
  Hardware: x86-64 (AMD64)
OS: All
Status: NEW
  Severity: critical
  Priority: medium
 Component: Driver/Radeon
  Assignee: xorg-driver-ati@lists.x.org
  Reporter: rbell...@pteradigm.com
QA Contact: xorg-t...@lists.x.org

Created attachment 108324
  -- https://bugs.freedesktop.org/attachment.cgi?id=108324action=edit
gdm journal

When the desktop environment starts up, two things can happen:
1. Before the login prompt, I get a corrupt desktop
2. After a successful login, I get a corrupt desktop

In both cases, the corruption looks almost identical, so I'm assuming the
problem is just different symptoms of the same problem, whether it's
configuration or a bug.

-- 
You are receiving this mail because:
You are the assignee for the bug.
___
xorg-driver-ati mailing list
xorg-driver-ati@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-driver-ati


[Bug 85385] corrupt desktop - at and after login

2014-10-23 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=85385

--- Comment #1 from G. Richard Bellamy rbell...@pteradigm.com ---
Created attachment 108325
  -- https://bugs.freedesktop.org/attachment.cgi?id=108325action=edit
Picture of what the screens look like

-- 
You are receiving this mail because:
You are the assignee for the bug.
___
xorg-driver-ati mailing list
xorg-driver-ati@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-driver-ati


[Bug 85385] corrupt desktop - at and after login

2014-10-23 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=85385

G. Richard Bellamy rbell...@pteradigm.com changed:

   What|Removed |Added

 Attachment #108325|text/plain  |image/jpeg
  mime type||

-- 
You are receiving this mail because:
You are the assignee for the bug.
___
xorg-driver-ati mailing list
xorg-driver-ati@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-driver-ati


[Bug 85385] corrupt desktop - at and after login

2014-10-23 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=85385

--- Comment #2 from G. Richard Bellamy rbell...@pteradigm.com ---
From another shell, when stopping and then restarting gdm:
--
Oct 22 18:04:40 eanna kernel: radeon :42:00.0: Saved 87 dwords of commands
on ring 0.
Oct 22 18:04:40 eanna kernel: radeon :42:00.0: GPU softreset: 0x0008
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   GRBM_STATUS  
= 0xA0003828
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   GRBM_STATUS_SE0  
= 0x0007
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   GRBM_STATUS_SE1  
= 0x0007
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   SRBM_STATUS  
= 0x20C0
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   SRBM_STATUS2 
= 0x
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   R_008674_CP_STALLED_STAT1
= 0x
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   R_008678_CP_STALLED_STAT2
= 0x00010100
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   R_00867C_CP_BUSY_STAT
= 0x00020180
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   R_008680_CP_STAT 
= 0x80038042
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   R_00D034_DMA_STATUS_REG  
= 0x44C83D57
Oct 22 18:04:40 eanna kernel: radeon :42:00.0: GRBM_SOFT_RESET=0x4001
Oct 22 18:04:40 eanna kernel: radeon :42:00.0: SRBM_SOFT_RESET=0x0100
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   GRBM_STATUS  
= 0x3828
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   GRBM_STATUS_SE0  
= 0x0007
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   GRBM_STATUS_SE1  
= 0x0007
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   SRBM_STATUS  
= 0x20C0
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   SRBM_STATUS2 
= 0x
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   R_008674_CP_STALLED_STAT1
= 0x
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   R_008678_CP_STALLED_STAT2
= 0x
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   R_00867C_CP_BUSY_STAT
= 0x
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   R_008680_CP_STAT 
= 0x
Oct 22 18:04:40 eanna kernel: radeon :42:00.0:   R_00D034_DMA_STATUS_REG  
= 0x44C83D57
Oct 22 18:04:40 eanna kernel: radeon :42:00.0: GPU reset succeeded, trying
to resume
Oct 22 18:04:40 eanna kernel: [drm] PCIE gen 2 link speeds already enabled
Oct 22 18:04:40 eanna kernel: [drm] PCIE GART of 1024M enabled (table at
0x0025D000).
Oct 22 18:04:40 eanna kernel: radeon :42:00.0: WB enabled
Oct 22 18:04:40 eanna kernel: radeon :42:00.0: fence driver on ring 0 use
gpu addr 0x4c00 and cpu addr 0x88100e3e7c00
Oct 22 18:04:40 eanna kernel: radeon :42:00.0: fence driver on ring 3 use
gpu addr 0x4c0c and cpu addr 0x88100e3e7c0c
Oct 22 18:04:40 eanna kernel: radeon :42:00.0: fence driver on ring 5 use
gpu addr 0x0005c418 and cpu addr 0xc90016b1c418
Oct 22 18:04:40 eanna kernel: [drm:r600_ring_test] *ERROR* radeon: ring 0 test
failed (scratch(0x8504)=0xCAFEDEAD)
Oct 22 18:04:40 eanna kernel: [drm:evergreen_resume] *ERROR* evergreen startup
failed on resume

-- 
You are receiving this mail because:
You are the assignee for the bug.
___
xorg-driver-ati mailing list
xorg-driver-ati@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-driver-ati