Age | Commit message (Collapse) | Author | Files | Lines |
|
glx should cleanup DRI2Drawable when GLXDrawable is destroyed.
Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
|
|
DRI2SwapComplete is too late for front to fake front copy if swap is
completed asynchronously. Client could be able to use fake front already
before swap completes.
Moving front to fake front solves the problem but requires that driver
is capable to copy from new front to fake front immediately after
ScheduleSwap hook returns.
Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
|
|
If client disconnects and new client gets same id DRI2 events may end to
wrong client. DRI2 reference list can be checked to see if the client
still owns the DRI2Drawable.
Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
|
|
The SwapBuffers request requires that we trigger the swap at some point
in the future. Sane drivers implement this by passing this request to
something that will trigger a callback with the buffer pointers
at the appropriate time.
The client can cause those buffers to be freed in X before the trigger
occurs, most easily by quitting. This leads to a server crash in
the driver when trying to do the swap.
See http://bugs.freedesktop.org/show_bug.cgi?id=29065 for Radeon and
https://bugs.freedesktop.org/show_bug.cgi?id=28080 for Intel.
Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
|
|
EGLImage requires that image siblings stay valid until all of them has
been freed. Base EGLImage is only required for creating new siblings.
http://www.khronos.org/registry/egl/extensions/KHR/EGL_KHR_image_base.txt
To keep DRI2Drawable until all siblings has been destroyed we need to
extent life time of DRI2Drawable beyond the Drawable.
We can keep the fake dri2 resource allocated. DRI2 can then searched
for fake resource if client tries to use DRI2Drawable after Drawable was
destroyed.
Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
|
|
Asynchronous request like SwapBuffers can still reference Drawable after
the Drawable has been freed. DRI2Drawable cleanup should be delayed
until all asynchronous operations have completed.
Reference counted DRI2Drawable helps to keep DRI2Drawable around until
all request on it has completed.
Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
|
|
To let DRI2Drawable exists longer than Drawable driver has to use
DRI2DrawablePtr to complete swaps and MSC waits. This allows DRI2 to
clean up after all operations complete without accessing the freed
DrawablePtr.
Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
|
|
DRI2 swaps may complete after Drawable has been destroyed. This causes
memory management problems as DRI2 internal state is tighly coupled with
Drawable.
DRI2DrawablePtr can be used to access DRI2 functionality. This provides
option that DRI2 drawable can live longer than underlying Drawable.
Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
Reviewed-By: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
|
|
If client calls DRI2CreateDrawable multiple times for same drawable
DRI2 creates multiple references. Multiple references cause DRI2 send
multiple invalidate events for same client.
Problem is triggered because client side EGL implementation is using
DRI2 directly.
DRI2 code in server doesn't handle DRI2DestroyDrawable that leaks
references. If client recreates rendering target EGL destroys and
creates DRI2 drawable. In that case DRI2DestroyDrawable leaks DRI2
drawable references.
To fix this memory leak/performance problem server has to free the
reference when client requests for it.
Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
Reviewed-By: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
|
|
|
|
The EDID processing regards physical dimensions of 0mm x 0mm as
invalid. Previously the old values for height and width would be
preserved if none of the physical dimension specifications in the new
EDID were considered valid.
This will come up in particular if first a monitor is connected to an
output, and then a projector is connected. Since projectors generally
report physical dimensions of 0mm x 0mm, this would result in the
projector claiming to have the physical dimensions of the monitor.
Signed-off-by: Evan Broder <ebroder@mokafive.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
|
|
This aligns the xorg server build with the mesa build, which is needed on
systems where aiglx with dri support is not enabled. Else the following error is
obtained when trying to load the software raster:
(EE) AIGLX error: dlopen of /usr/lib/dri/swrast_dri.so failed (/usr/lib/dri/swrast_dri.so: undefined symbol: _glapi_tls_Context)
(EE) GLX: could not load software renderer
(II) GLX: no usable GL providers found for screen 0
because mesa always enables TLS use in GLX, even if dri is not available.
Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Signed-off-by: Julien Cristau <jcristau@debian.org>
Signed-off-by: Keith Packard <keithp@keithp.com>
|
|
- Apps like xterm can trigger a lot of fallback rendering.
- This can lead to (annoyingly) high latencies, because you
have to wait for the block handler.
- You need a driver that doesn't directly access the front
buffer to trigger this (NV50+ nouveau for example).
- Repeatingly doing dmesg on an xterm with a bitmap font
will reveal that you never see part of the text.
- I have recieved at least one complaint in the past of slow
terminal performance, which was related to core font
rendering.
- This does sacrifice some throughput, roughly 33% slower.
Reviewed-by: Michel Dänzer <michel@daenzer.net>
Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
|
|
Reviewed-by: Michel Dänzer <michel@daenzer.net>
Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
|
|
- Not sure if it was causing problems, but you never know.
Reviewed-by: Michel Dänzer <michel@daenzer.net>
Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
|
|
|
|
|
|
|
|
M_DRAWABLE_PIXMAP is the lookup mask to dixLookupDrawable, and _not_ the
type value in the drawable itself.
Signed-off-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Eamon Walsh <ewalsh@tycho.nsa.gov>
Signed-off-by: Keith Packard <keithp@keithp.com>
|
|
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
|
|
DGAIsDgaEvent() is not used anymore.
Signed-off-by: Ville Syrjala <syrjala@sci.fi>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Ville Syrjala <syrjala@sci.fi>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Move some variables to the scope where they are used.
Signed-off-by: Ville Syrjala <syrjala@sci.fi>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Ville Syrjala <syrjala@sci.fi>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Previously some sort of absolute coordinates were sent out in
the padding of the DGA2 Motion and Button events. DGAMouseX
and DGAMouseY were used to keep track of said coordinates.
libXxf86dga doesn't use that data for anything, and at least
git history didn't show any past usage either. So let's just
remove the last remnants of of this mess.
Signed-off-by: Ville Syrjala <syrjala@sci.fi>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Copy dx/dy from the internal event to the DGA2 Motion/Button events.
Do the same for Key events for the sake of keeping the code consistent.
Signed-off-by: Ville Syrjala <syrjala@sci.fi>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
mieq_installed is used as a boolean, so why not make it such. Also
it's a static variable, so the the explicit zero initialization can
be removed.
Signed-off-by: Ville Syrjala <syrjala@sci.fi>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Remove the handler only if it was installed. Also mark it as
uninstalled, otherwise it wouldn't get reinstalled after a
server reset.
Signed-off-by: Ville Syrjala <syrjala@sci.fi>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
The ET_DGAEvent handler is only installed when a client
requests relative events via DGA1. Do it also when a client
requests DGA2 events.
Signed-off-by: Ville Syrjala <syrjala@sci.fi>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
DGA key event support was lost in commit
8da0ff2d51086666d10ca7330d428e8610a4a0e3. Bring it back.
Signed-off-by: Ville Syrjala <syrjala@sci.fi>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Ville Syrjala <syrjala@sci.fi>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
The new valuator_mask_free() call requires a minor bump.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
When XkbChangeEnabledControls is called to disable key repetition of a
certain key (or keys), currently ongoing repetition of that key was
not cancelled. It was cancelled if ChangeKeyboardControl was used to
disable key repetition globally.
Reviewed-by: Rami Ylimäki <rami.ylimaki@vincit.fi>
Reviewed-by: Dirk Wallenstein <halsmit@t-online.de>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
xf86bigfont.c: In function 'XFree86BigfontExtensionInit':
xf86bigfont.c:146: error: 'ProcXF86BigfontDispatch' undeclared (first use in this function)
xf86bigfont.c:147: error: 'SProcXF86BigfontDispatch' undeclared (first use in this function)
It seems this has been broken since commit cbd4d5dbb70db62ba1cb79c7b904e6fa11f62d7e
"delete pervasively use of DISPATCH_PROC" (2010-09-28), which is a bit worrying as
that presumably indicates that no tinderbox is configuring with --enable-xf86bigfont.
In a similar fashion to that commit, fix by moving XFree86BigfontExtensionInit()
below the definitions of the static dispatch functions it references.
Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Reviewed-by: Julien Cristau <jcristau@debian.org>
|
|
This allows better interaction with CrashTracer
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
|
|
XP_EVENT_DISPLAY_CHANGED
We get an XP_EVENT_DISPLAY_CHANGED event when our display configuration is
changed. If this change was caused by hotplugging a monitor or Mac Display
Preferences changes by the user, we need to call RRScreenSizeNotify in order
to ensure new connections get the correct screen size.
http://xquartz.macosforge.org/trac/ticket/460
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
|
|
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
|
|
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
|
|
|
|
|
|
|
|
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Gaetan Nadon <memsize@videotron.ca>
Tested-by: Gaetan Nadon <memsize@videotron.ca>
Reviewed-by: Dan Nicholson <dbn.lists@gmail.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
|
|
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
|
This is clearly meant to short-circuit the (modestly) expensive resource
lookup in LegalNewID. The problem is that long-lived clients will
eventually run completely through their XID space and start asking
XC-MISC for IDs to reuse. Once that happens, the comparison against
expectID will always be true, and we'll no longer catch XID collisions
at all.
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
|
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
|
We can return from WaitForSomething with no clients ready for any number
of reasons. There's no reason to set up the scheduler timer when this
happens.
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
|
xdmxconfig.c: In function ‘dmxConfigCanvasDraw’:
xdmxconfig.c:299:23: warning: ‘maxHeight’ may be used uninitialized in this function
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
|
dmxinputinit.c: In function ‘dmxBlockHandler’:
dmxinputinit.c:610:44: warning: cast from pointer to integer of different size
dmxinputinit.c: In function ‘dmxWakeupHandler’:
dmxinputinit.c:637:41: warning: cast from pointer to integer of different size
dmxinputinit.c: In function ‘dmxInputInit’:
dmxinputinit.c:1041:36: warning: cast to pointer from integer of different size
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
|
dmxinputinit.c: At top level:
dmxinputinit.c:135:29: warning: ‘DMXCommonOth’ defined but not used
DMXCommonOth is actually mentioned in a #if 0 block, so delete it and
the block that references it. If anyone needs it, git remembers.
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
|
dmxgc.c: In function ‘dmxChangeClip’:
dmxgc.c:386:5: warning: case label value exceeds maximum value for type
dmxgc.c:387:5: warning: case label value exceeds maximum value for type
dmxgc.c:388:5: warning: case label value exceeds maximum value for type
dmxgc.c:389:5: warning: case label value exceeds maximum value for type
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Adam Jackson <ajax@redhat.com>
|