diff options
author | marha <marha@users.sourceforge.net> | 2013-10-21 07:47:02 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-10-21 07:47:02 +0200 |
commit | 6d895f30ab93d71afddc612d8b007f2de7f04165 (patch) | |
tree | 2fc8ec6985dbbcd007b299e8bc7536e70fb21e32 | |
parent | 5880b059e9a156336daf32a73bed72def6ba90f2 (diff) | |
download | vcxsrv-6d895f30ab93d71afddc612d8b007f2de7f04165.tar.gz vcxsrv-6d895f30ab93d71afddc612d8b007f2de7f04165.tar.bz2 vcxsrv-6d895f30ab93d71afddc612d8b007f2de7f04165.zip |
fontconfig mesa xserver xkeyboard-config git update 21 okt 2013
xserver commit 8db4121a3c7104548fd4a138ac1d1bdea5fd22d9
libxcb commit e4e0c6eec861f4c69da12060dc8dbe7a63fa5eb6
libxcb/xcb-proto commit 55c75accecf0e76d2aa38656efd2be4044b9e643
xkeyboard-config commit 39a9a10ff11f6872e4b278240fbabb4e98209fa6
libX11 commit 18a5278b008e9faa59b346fcab18a8d74b875fda
libXdmcp commit 089081dca4ba3598c6f9bf401c029378943b5854
libXext commit 7378d4bdbd33ed49ed6cfa5c4f73d7527982aab4
libfontenc commit 3acba630d8b57084f7e92c15732408711ed5137a
libXinerama commit 6e1d1dc328ba8162bba2f4694e7f3c706a1491ff
libXau commit 304a11be4727c5a7feeb2501e8e001466f8ce84e
xkbcomp commit 839ccda42d8b088d94324cd77c4be954859914d3
pixman commit 3c2f4b651747c1ac484c39d5128cae5483094342
xextproto commit f27fcc99d1cf935cc289933326f7d3baacd5107a
randrproto commit ca7cc541c2e43e6c784df19b4583ac35829d2f72
glproto commit 8e3407e02980d088e20041e79bdcdd3737e7827e
mkfontscale commit f48de13423c7300f4da9f61993b624426b38ddc0
xwininfo commit ba0d1b0da21d2dbdd81098ed5778f3792b472e13
libXft commit c5e760a239afc62a1c75e0509868e35957c8df52
libXmu commit 2539e539eafdac88177c8ee30b043c5d52f017e4
libxtrans commit f6a161f2a003f4da0a2e414b4faa0ee0de0c01f0
fontconfig commit 5e029db4971e37437cfe6147d52d00136dfb8cb5
mesa commit 14429295e16cf9b7616494fb68f400dfb9c80c71
35 files changed, 427 insertions, 185 deletions
diff --git a/fontconfig/m4/ax_pthread.m4 b/fontconfig/m4/ax_pthread.m4 index d90de34d1..e77541cea 100644 --- a/fontconfig/m4/ax_pthread.m4 +++ b/fontconfig/m4/ax_pthread.m4 @@ -82,7 +82,7 @@ # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. -#serial 18 +#serial 21 AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) AC_DEFUN([AX_PTHREAD], [ @@ -103,8 +103,8 @@ if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) - AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes) - AC_MSG_RESULT($ax_pthread_ok) + AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes]) + AC_MSG_RESULT([$ax_pthread_ok]) if test x"$ax_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" @@ -162,8 +162,27 @@ case ${host_os} in darwin*) ax_pthread_flags="-pthread $ax_pthread_flags" ;; + netbsd*) + # use libc stubs, don't link against libpthread, to allow + # dynamic loading + ax_pthread_flags="" + ;; esac +# Clang doesn't consider unrecognized options an error unless we specify +# -Werror. We throw in some extra Clang-specific options to ensure that +# this doesn't happen for GCC, which also accepts -Werror. + +AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags]) +save_CFLAGS="$CFLAGS" +ax_pthread_extra_flags="-Werror" +CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument" +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])], + [AC_MSG_RESULT([yes])], + [ax_pthread_extra_flags= + AC_MSG_RESULT([no])]) +CFLAGS="$save_CFLAGS" + if test x"$ax_pthread_ok" = xno; then for flag in $ax_pthread_flags; do @@ -178,7 +197,7 @@ for flag in $ax_pthread_flags; do ;; pthread-config) - AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no) + AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) if test x"$ax_pthread_config" = xno; then continue; fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" @@ -193,7 +212,7 @@ for flag in $ax_pthread_flags; do save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we @@ -219,7 +238,7 @@ for flag in $ax_pthread_flags; do LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" - AC_MSG_RESULT($ax_pthread_ok) + AC_MSG_RESULT([$ax_pthread_ok]) if test "x$ax_pthread_ok" = xyes; then break; fi @@ -245,9 +264,9 @@ if test "x$ax_pthread_ok" = xyes; then [attr_name=$attr; break], []) done - AC_MSG_RESULT($attr_name) + AC_MSG_RESULT([$attr_name]) if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then - AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, + AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name], [Define to necessary symbol if this constant uses a non-standard name on your system.]) fi @@ -261,45 +280,54 @@ if test "x$ax_pthread_ok" = xyes; then if test "$GCC" = "yes"; then flag="-D_REENTRANT" else + # TODO: What about Clang on Solaris? flag="-mt -D_REENTRANT" fi ;; esac - AC_MSG_RESULT(${flag}) + AC_MSG_RESULT([$flag]) if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], - ax_cv_PTHREAD_PRIO_INHERIT, [ - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[#include <pthread.h>]], [[int i = PTHREAD_PRIO_INHERIT;]])], + [ax_cv_PTHREAD_PRIO_INHERIT], [ + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]], + [[int i = PTHREAD_PRIO_INHERIT;]])], [ax_cv_PTHREAD_PRIO_INHERIT=yes], [ax_cv_PTHREAD_PRIO_INHERIT=no]) ]) AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"], - AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.])) + [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])]) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" - # More AIX lossage: must compile with xlc_r or cc_r - if test x"$GCC" != xyes; then - AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC}) - else - PTHREAD_CC=$CC + # More AIX lossage: compile with *_r variant + if test "x$GCC" != xyes; then + case $host_os in + aix*) + AS_CASE(["x/$CC"], + [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], + [#handle absolute path differently from PATH based program lookup + AS_CASE(["x$CC"], + [x/*], + [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])], + [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])]) + ;; + esac fi -else - PTHREAD_CC="$CC" fi -AC_SUBST(PTHREAD_LIBS) -AC_SUBST(PTHREAD_CFLAGS) -AC_SUBST(PTHREAD_CC) +test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" + +AC_SUBST([PTHREAD_LIBS]) +AC_SUBST([PTHREAD_CFLAGS]) +AC_SUBST([PTHREAD_CC]) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$ax_pthread_ok" = xyes; then - ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) + ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) : else ax_pthread_ok=no diff --git a/fontconfig/src/fccache.c b/fontconfig/src/fccache.c index 3568595ed..c7f243749 100644 --- a/fontconfig/src/fccache.c +++ b/fontconfig/src/fccache.c @@ -28,6 +28,7 @@ #include <dirent.h> #include <string.h> #include <sys/types.h> +#include <sys/stat.h> #include <assert.h> #if defined(HAVE_MMAP) || defined(__CYGWIN__) # include <unistd.h> @@ -572,7 +573,7 @@ FcDirCacheMapFd (int fd, struct stat *fd_stat, struct stat *dir_stat) { #if defined(HAVE_MMAP) || defined(__CYGWIN__) cache = mmap (0, fd_stat->st_size, PROT_READ, MAP_SHARED, fd, 0); -#ifdef HAVE_POSIX_FADVISE +#if defined(HAVE_POSIX_FADVISE) && defined(POSIX_FADV_WILLNEED) posix_fadvise (fd, 0, fd_stat->st_size, POSIX_FADV_WILLNEED); #endif if (cache == MAP_FAILED) diff --git a/mesalib/docs/GL3.txt b/mesalib/docs/GL3.txt index c269f19dd..a56e7fead 100644 --- a/mesalib/docs/GL3.txt +++ b/mesalib/docs/GL3.txt @@ -71,7 +71,7 @@ Base vertex offset(GL_ARB_draw_elements_base_vertex) DONE (i965, r300, r600, sw Frag shader coord (GL_ARB_fragment_coord_conventions) DONE (i965, r300, r600, swrast) Provoking vertex (GL_ARB_provoking_vertex) DONE (i965, r300, r600, swrast) Seamless cubemaps (GL_ARB_seamless_cube_map) DONE (i965, r600) -Multisample textures (GL_ARB_texture_multisample) DONE (i965) +Multisample textures (GL_ARB_texture_multisample) DONE (i965, r600) Frag depth clamp (GL_ARB_depth_clamp) DONE (i965, r600, swrast) Fence objects (GL_ARB_sync) DONE (i965, r300, r600, swrast) GLX_ARB_create_context_profile DONE diff --git a/mesalib/docs/index.html b/mesalib/docs/index.html index 3b9c4361c..990702281 100644 --- a/mesalib/docs/index.html +++ b/mesalib/docs/index.html @@ -16,6 +16,12 @@ <h1>News</h1> +<h2>October 18, 2013</h2> +<p> +<a href="relnotes/9.2.2.html">Mesa 9.2.2</a> is released. +This is a bug fix release. +</p> + <h2>October 4, 2013</h2> <p> <a href="relnotes/9.2.1.html">Mesa 9.2.1</a> and diff --git a/mesalib/docs/relnotes.html b/mesalib/docs/relnotes.html index 82072ddfa..35cef80f2 100644 --- a/mesalib/docs/relnotes.html +++ b/mesalib/docs/relnotes.html @@ -22,6 +22,7 @@ The release notes summarize what's new or changed in each Mesa release. <ul> <li><a href="relnotes/10.0.html">10.0 release notes</a> +<li><a href="relnotes/9.2.2.html">9.2.2 release notes</a> <li><a href="relnotes/9.2.1.html">9.2.1 release notes</a> <li><a href="relnotes/9.2.html">9.2 release notes</a> <li><a href="relnotes/9.1.7.html">9.1.7 release notes</a> diff --git a/mesalib/docs/relnotes/10.0.html b/mesalib/docs/relnotes/10.0.html index 8f97921b0..0b25f49b5 100644 --- a/mesalib/docs/relnotes/10.0.html +++ b/mesalib/docs/relnotes/10.0.html @@ -22,11 +22,11 @@ People who are concerned with stability and reliability should stick with a previous release or wait for Mesa 10.0.1. </p> <p> -Mesa 10.0 implements the OpenGL 3.2 API, but the version reported by +Mesa 10.0 implements the OpenGL 3.3 API, but the version reported by glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 3.2. OpenGL -3.2 is <strong>only</strong> available if requested at context creation +Some drivers don't support all the features required in OpenGL 3.3. OpenGL +3.3 is <strong>only</strong> available if requested at context creation because compatibility contexts are not supported. </p> diff --git a/mesalib/docs/relnotes/9.2.2.html b/mesalib/docs/relnotes/9.2.2.html new file mode 100644 index 000000000..c2666a46c --- /dev/null +++ b/mesalib/docs/relnotes/9.2.2.html @@ -0,0 +1,97 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"> + <title>Mesa Release Notes</title> + <link rel="stylesheet" type="text/css" href="../mesa.css"> +</head> +<body> + +<div class="header"> + <h1>The Mesa 3D Graphics Library</h1> +</div> + +<iframe src="../contents.html"></iframe> +<div class="content"> + +<h1>Mesa 9.2.2 Release Notes / (October 18, 2013)</h1> + +<p> +Mesa 9.2.2 is a bug fix release which fixes bugs found since the 9.2.1 release. +</p> +<p> +Mesa 9.2 implements the OpenGL 3.1 API, but the version reported by +glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / +glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 3.1. OpenGL +3.1 is <strong>only</strong> available if requested at context creation +because GL_ARB_compatibility is not supported. +</p> + + +<h2>MD5 checksums</h2> +<pre> +</pre> + + +<h2>New features</h2> +<p>None</p> + +<h2>Bug fixes</h2> + +<p>This list is likely incomplete.</p> + +<ul> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=69449">Bug 69449</a> - Valgrind error in program_resource_visitor::recursion</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70411">Bug 70411</a> - glInvalidateFramebuffer fails with GL_INVALID_ENUM</li> + +</ul> + +<h2>Changes</h2> + +<p>The full set of changes can be viewed by using the following GIT command:</p> + +<pre> + git log mesa-9.2.1..mesa-9.2.2 +</pre> + +<p>Brian Paul (3):</p> +<ul> + <li>docs: add missing <pre> tag</li> + <li>svga: fix incorrect memcpy src in svga_buffer_upload_piecewise()</li> + <li>mesa: consolidate cube width=height error checking</li> +</ul> + +<p>Carl Worth (3):</p> +<ul> + <li>docs: Add md5sums for 9.2.1 release</li> + <li>Bump version to 9.2.2</li> +</ul> + +<p>Constantin Baranov (1):</p> +<ul> + <li>mesa: Add missing switch break in invalidate_framebuffer_storage()</li> +</ul> + +<p>Eric Anholt (3):</p> +<ul> + <li>i965: Don't forget the cube map padding on gen5+.</li> + <li>mesa: Fix compiler warnings when ALIGN's alignment is "1 << value".</li> + <li>i965: Fix 3D texture layout by more literally copying from the spec.</li> +</ul> + +<p>Francisco Jerez (1):</p> +<ul> + <li>glsl: Fix usage of the wrong union member in program_resource_visitor::recursion.</li> +</ul> + +<p>Tom Stellard (1):</p> +<ul> + <li>radeonsi: Use 'SI' as the LLVM processor for CIK on LLVM <= 3.3</li> +</ul> + +</div> +</body> +</html> diff --git a/mesalib/include/GL/glx.h b/mesalib/include/GL/glx.h index 87c31fdcc..fa5a8eda9 100644 --- a/mesalib/include/GL/glx.h +++ b/mesalib/include/GL/glx.h @@ -168,7 +168,6 @@ typedef XID GLXDrawable; /* GLX 1.3 and later */ typedef struct __GLXFBConfigRec *GLXFBConfig; typedef XID GLXFBConfigID; -typedef XID GLXContextID; typedef XID GLXWindow; typedef XID GLXPbuffer; diff --git a/mesalib/scons/gallium.py b/mesalib/scons/gallium.py index 5b20f3ff6..be3c3e7d9 100644 --- a/mesalib/scons/gallium.py +++ b/mesalib/scons/gallium.py @@ -507,7 +507,7 @@ def generate(env): if env['platform'] in ('linux',): libs += ['rt'] if env['platform'] in ('haiku'): - libs += ['root', 'be', 'network'] + libs += ['root', 'be', 'network', 'translation'] env.Append(LIBS = libs) # OpenMP diff --git a/mesalib/src/glsl/builtin_variables.cpp b/mesalib/src/glsl/builtin_variables.cpp index f06d2ab05..64f34061a 100644 --- a/mesalib/src/glsl/builtin_variables.cpp +++ b/mesalib/src/glsl/builtin_variables.cpp @@ -311,7 +311,8 @@ private: per_vertex_accumulator::per_vertex_accumulator() - : num_fields(0) + : fields(), + num_fields(0) { } diff --git a/mesalib/src/mesa/main/extensions.c b/mesalib/src/mesa/main/extensions.c index 2507fdf34..e8e0a20d8 100644 --- a/mesalib/src/mesa/main/extensions.c +++ b/mesalib/src/mesa/main/extensions.c @@ -144,6 +144,7 @@ static const struct extension extension_table[] = { { "GL_ARB_texture_float", o(ARB_texture_float), GL, 2004 }, { "GL_ARB_texture_gather", o(ARB_texture_gather), GL, 2009 }, { "GL_ARB_texture_mirrored_repeat", o(dummy_true), GLL, 2001 }, + { "GL_ARB_texture_mirror_clamp_to_edge", o(ARB_texture_mirror_clamp_to_edge), GL, 2013 }, { "GL_ARB_texture_multisample", o(ARB_texture_multisample), GL, 2009 }, { "GL_ARB_texture_non_power_of_two", o(ARB_texture_non_power_of_two), GL, 2003 }, { "GL_ARB_texture_query_levels", o(ARB_texture_query_levels), GL, 2012 }, @@ -407,6 +408,7 @@ _mesa_enable_sw_extensions(struct gl_context *ctx) #ifdef TEXTURE_FLOAT_ENABLED ctx->Extensions.ARB_texture_float = GL_TRUE; #endif + ctx->Extensions.ARB_texture_mirror_clamp_to_edge = GL_TRUE; ctx->Extensions.ARB_texture_non_power_of_two = GL_TRUE; ctx->Extensions.ARB_texture_rg = GL_TRUE; ctx->Extensions.ARB_texture_compression_rgtc = GL_TRUE; diff --git a/mesalib/src/mesa/main/mtypes.h b/mesalib/src/mesa/main/mtypes.h index 15893ecac..6374e8c0d 100644 --- a/mesalib/src/mesa/main/mtypes.h +++ b/mesalib/src/mesa/main/mtypes.h @@ -3218,6 +3218,7 @@ struct gl_extensions GLboolean ARB_texture_env_dot3; GLboolean ARB_texture_float; GLboolean ARB_texture_gather; + GLboolean ARB_texture_mirror_clamp_to_edge; GLboolean ARB_texture_multisample; GLboolean ARB_texture_non_power_of_two; GLboolean ARB_texture_query_levels; diff --git a/mesalib/src/mesa/main/samplerobj.c b/mesalib/src/mesa/main/samplerobj.c index c3b612c76..7285ef5ed 100644 --- a/mesalib/src/mesa/main/samplerobj.c +++ b/mesalib/src/mesa/main/samplerobj.c @@ -305,7 +305,7 @@ validate_texture_wrap_mode(struct gl_context *ctx, GLenum wrap) case GL_MIRROR_CLAMP_EXT: return e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp; case GL_MIRROR_CLAMP_TO_EDGE_EXT: - return e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp; + return e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp || e->ARB_texture_mirror_clamp_to_edge; case GL_MIRROR_CLAMP_TO_BORDER_EXT: return e->EXT_texture_mirror_clamp; default: diff --git a/mesalib/src/mesa/main/texparam.c b/mesalib/src/mesa/main/texparam.c index 31723c377..c9d928f63 100644 --- a/mesalib/src/mesa/main/texparam.c +++ b/mesalib/src/mesa/main/texparam.c @@ -84,16 +84,22 @@ validate_texture_wrap_mode(struct gl_context * ctx, GLenum target, GLenum wrap) break; case GL_MIRROR_CLAMP_EXT: + supported = is_desktop_gl + && (e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp) + && (target != GL_TEXTURE_RECTANGLE_NV) + && (target != GL_TEXTURE_EXTERNAL_OES); + break; + case GL_MIRROR_CLAMP_TO_EDGE_EXT: supported = is_desktop_gl - && (e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp) - && (target != GL_TEXTURE_RECTANGLE_NV) + && (e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp || e->ARB_texture_mirror_clamp_to_edge) + && (target != GL_TEXTURE_RECTANGLE_NV) && (target != GL_TEXTURE_EXTERNAL_OES); break; case GL_MIRROR_CLAMP_TO_BORDER_EXT: supported = is_desktop_gl && e->EXT_texture_mirror_clamp - && (target != GL_TEXTURE_RECTANGLE_NV) + && (target != GL_TEXTURE_RECTANGLE_NV) && (target != GL_TEXTURE_EXTERNAL_OES); break; diff --git a/mesalib/src/mesa/state_tracker/st_extensions.c b/mesalib/src/mesa/state_tracker/st_extensions.c index 97dd73210..231bb395a 100644 --- a/mesalib/src/mesa/state_tracker/st_extensions.c +++ b/mesalib/src/mesa/state_tracker/st_extensions.c @@ -384,6 +384,7 @@ void st_init_extensions(struct st_context *st) { o(ARB_shader_stencil_export), PIPE_CAP_SHADER_STENCIL_EXPORT }, { o(ARB_shader_texture_lod), PIPE_CAP_SM3 }, { o(ARB_shadow), PIPE_CAP_TEXTURE_SHADOW_MAP }, + { o(ARB_texture_mirror_clamp_to_edge), PIPE_CAP_TEXTURE_MIRROR_CLAMP }, { o(ARB_texture_non_power_of_two), PIPE_CAP_NPOT_TEXTURES }, { o(ARB_timer_query), PIPE_CAP_QUERY_TIMESTAMP }, { o(ARB_transform_feedback2), PIPE_CAP_STREAM_OUTPUT_PAUSE_RESUME }, diff --git a/xorg-server/Xext/saver.c b/xorg-server/Xext/saver.c index fe81bc4d7..e06f40837 100644 --- a/xorg-server/Xext/saver.c +++ b/xorg-server/Xext/saver.c @@ -392,9 +392,7 @@ ScreenSaverFreeSuspend(pointer value, XID id) DeviceIntPtr dev; UpdateCurrentTimeIf(); nt_list_for_each_entry(dev, inputInfo.devices, next) - lastDeviceEventTime[dev->id] = currentTime; - lastDeviceEventTime[XIAllDevices] = currentTime; - lastDeviceEventTime[XIAllMasterDevices] = currentTime; + NoticeTime(dev, currentTime); SetScreenSaverTimer(); } } @@ -681,7 +679,7 @@ ProcScreenSaverQueryInfo(ClientPtr client) pPriv = GetScreenPrivate(pDraw->pScreen); UpdateCurrentTime(); - lastInput = GetTimeInMillis() - lastDeviceEventTime[XIAllDevices].milliseconds; + lastInput = GetTimeInMillis() - LastEventTime(XIAllDevices).milliseconds; rep = (xScreenSaverQueryInfoReply) { .type = X_Reply, diff --git a/xorg-server/Xext/sync.c b/xorg-server/Xext/sync.c index 9ae5b3981..b2ee92e37 100644 --- a/xorg-server/Xext/sync.c +++ b/xorg-server/Xext/sync.c @@ -699,6 +699,14 @@ SyncAwaitTriggerFired(SyncTrigger * pTrigger) FreeResource(pAwaitUnion->header.delete_id, RT_NONE); } +static CARD64 +SyncUpdateCounter(SyncCounter *pCounter, CARD64 newval) +{ + CARD64 oldval = pCounter->value; + pCounter->value = newval; + return oldval; +} + /* This function should always be used to change a counter's value so that * any triggers depending on the counter will be checked. */ @@ -708,8 +716,7 @@ SyncChangeCounter(SyncCounter * pCounter, CARD64 newval) SyncTriggerList *ptl, *pnext; CARD64 oldval; - oldval = pCounter->value; - pCounter->value = newval; + oldval = SyncUpdateCounter(pCounter, newval); /* run through triggers to see if any become true */ for (ptl = pCounter->sync.pTriglist; ptl; ptl = pnext) { @@ -1019,6 +1026,11 @@ SyncComputeBracketValues(SyncCounter * pCounter) psci->bracket_greater = pTrigger->test_value; pnewgtval = &psci->bracket_greater; } + else if (XSyncValueGreaterThan(pCounter->value, pTrigger->test_value) && + XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less)) { + psci->bracket_less = pTrigger->test_value; + pnewltval = &psci->bracket_less; + } } else if (pTrigger->test_type == XSyncNegativeComparison && ct != XSyncCounterNeverDecreases) { @@ -1028,52 +1040,53 @@ SyncComputeBracketValues(SyncCounter * pCounter) psci->bracket_less = pTrigger->test_value; pnewltval = &psci->bracket_less; } + else if (XSyncValueLessThan(pCounter->value, pTrigger->test_value) && + XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater)) { + psci->bracket_greater = pTrigger->test_value; + pnewgtval = &psci->bracket_greater; + } } else if (pTrigger->test_type == XSyncNegativeTransition && ct != XSyncCounterNeverIncreases) { - if (XSyncValueGreaterThan(pCounter->value, pTrigger->test_value) && - XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less)) - { - psci->bracket_less = pTrigger->test_value; - pnewltval = &psci->bracket_less; + if (XSyncValueGreaterOrEqual(pCounter->value, pTrigger->test_value) && + XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less)) { + /* + * If the value is exactly equal to our threshold, we want one + * more event in the negative direction to ensure we pick up + * when the value is less than this threshold. + */ + psci->bracket_less = pTrigger->test_value; + pnewltval = &psci->bracket_less; } - else if (XSyncValueEqual(pCounter->value, pTrigger->test_value) && - XSyncValueGreaterThan(pTrigger->test_value, - psci->bracket_less)) { - /* - * The value is exactly equal to our threshold. We want one - * more event in the negative direction to ensure we pick up - * when the value is less than this threshold. - */ - psci->bracket_less = pTrigger->test_value; - pnewltval = &psci->bracket_less; + else if (XSyncValueLessThan(pCounter->value, pTrigger->test_value) && + XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater)) { + psci->bracket_greater = pTrigger->test_value; + pnewgtval = &psci->bracket_greater; } } else if (pTrigger->test_type == XSyncPositiveTransition && ct != XSyncCounterNeverDecreases) { - if (XSyncValueLessThan(pCounter->value, pTrigger->test_value) && - XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater)) - { - psci->bracket_greater = pTrigger->test_value; - pnewgtval = &psci->bracket_greater; + if (XSyncValueLessOrEqual(pCounter->value, pTrigger->test_value) && + XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater)) { + /* + * If the value is exactly equal to our threshold, we + * want one more event in the positive direction to + * ensure we pick up when the value *exceeds* this + * threshold. + */ + psci->bracket_greater = pTrigger->test_value; + pnewgtval = &psci->bracket_greater; } - else if (XSyncValueEqual(pCounter->value, pTrigger->test_value) && - XSyncValueLessThan(pTrigger->test_value, - psci->bracket_greater)) { - /* - * The value is exactly equal to our threshold. We want one - * more event in the positive direction to ensure we pick up - * when the value *exceeds* this threshold. - */ - psci->bracket_greater = pTrigger->test_value; - pnewgtval = &psci->bracket_greater; + else if (XSyncValueGreaterThan(pCounter->value, pTrigger->test_value) && + XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less)) { + psci->bracket_less = pTrigger->test_value; + pnewltval = &psci->bracket_less; } } } /* end for each trigger */ - if (pnewgtval || pnewltval) { - (*psci->BracketValues) ((pointer) pCounter, pnewltval, pnewgtval); - } + (*psci->BracketValues) ((pointer) pCounter, pnewltval, pnewgtval); + } /* @@ -2619,7 +2632,7 @@ IdleTimeQueryValue(pointer pCounter, CARD64 * pValue_return) } else deviceid = XIAllDevices; - idle = GetTimeInMillis() - lastDeviceEventTime[deviceid].milliseconds; + idle = GetTimeInMillis() - LastEventTime(deviceid).milliseconds; XSyncIntsToValue(pValue_return, idle, 0); } @@ -2638,7 +2651,7 @@ IdleTimeBlockHandler(pointer pCounter, struct timeval **wt, pointer LastSelectMa return; old_idle = counter->value; - IdleTimeQueryValue(NULL, &idle); + IdleTimeQueryValue(counter, &idle); counter->value = idle; /* push, so CheckTrigger works */ if (less && XSyncValueLessOrEqual(idle, *less)) { @@ -2700,6 +2713,17 @@ IdleTimeBlockHandler(pointer pCounter, struct timeval **wt, pointer LastSelectMa } static void +IdleTimeCheckBrackets(SyncCounter *counter, XSyncValue idle, XSyncValue *less, XSyncValue *greater) +{ + if ((greater && XSyncValueGreaterOrEqual(idle, *greater)) || + (less && XSyncValueLessOrEqual(idle, *less))) { + SyncChangeCounter(counter, idle); + } + else + SyncUpdateCounter(counter, idle); +} + +static void IdleTimeWakeupHandler(pointer pCounter, int rc, pointer LastSelectMask) { SyncCounter *counter = pCounter; @@ -2713,10 +2737,24 @@ IdleTimeWakeupHandler(pointer pCounter, int rc, pointer LastSelectMask) IdleTimeQueryValue(pCounter, &idle); - if ((greater && XSyncValueGreaterOrEqual(idle, *greater)) || - (less && XSyncValueLessOrEqual(idle, *less))) { - SyncChangeCounter(counter, idle); + /* + There is no guarantee for the WakeupHandler to be called within a specific + timeframe. Idletime may go to 0, but by the time we get here, it may be + non-zero and alarms for a pos. transition on 0 won't get triggered. + https://bugs.freedesktop.org/show_bug.cgi?id=70476 + */ + if (LastEventTimeWasReset(priv->deviceid)) { + LastEventTimeToggleResetFlag(priv->deviceid, FALSE); + if (!XSyncValueIsZero(idle)) { + XSyncValue zero; + XSyncIntsToValue(&zero, 0, 0); + IdleTimeCheckBrackets(counter, zero, less, greater); + less = priv->value_less; + greater = priv->value_greater; + } } + + IdleTimeCheckBrackets(counter, idle, less, greater); } static void @@ -2734,6 +2772,9 @@ IdleTimeBracketValues(pointer pCounter, CARD64 * pbracket_less, IdleTimeWakeupHandler, pCounter); } else if (!registered && (pbracket_less || pbracket_greater)) { + /* Reset flag must be zero so we don't force a idle timer reset on + the first wakeup */ + LastEventTimeToggleResetAll(FALSE); RegisterBlockAndWakeupHandlers(IdleTimeBlockHandler, IdleTimeWakeupHandler, pCounter); } diff --git a/xorg-server/configure.ac b/xorg-server/configure.ac index 67ef3c24a..7b4e70fe7 100644 --- a/xorg-server/configure.ac +++ b/xorg-server/configure.ac @@ -26,9 +26,9 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ(2.60) -AC_INIT([xorg-server], 1.14.99.2, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) -RELEASE_DATE="2013-10-04" -RELEASE_NAME="Chicory Coffee" +AC_INIT([xorg-server], 1.14.99.3, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +RELEASE_DATE="2013-10-18" +RELEASE_NAME="Bundaberg" AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) diff --git a/xorg-server/dix/dixfonts.c b/xorg-server/dix/dixfonts.c index feb765d1c..2e34d370f 100644 --- a/xorg-server/dix/dixfonts.c +++ b/xorg-server/dix/dixfonts.c @@ -1425,6 +1425,7 @@ doImageText(ClientPtr client, ITclosurePtr c) GC *pGC; unsigned char *data; ITclosurePtr new_closure; + ITclosurePtr old_closure; /* We're putting the client to sleep. We need to save some state. Similar problem to that handled @@ -1436,12 +1437,14 @@ doImageText(ClientPtr client, ITclosurePtr c) err = BadAlloc; goto bail; } + old_closure = c; *new_closure = *c; c = new_closure; data = malloc(c->nChars * itemSize); if (!data) { free(c); + c = old_closure; err = BadAlloc; goto bail; } @@ -1452,6 +1455,7 @@ doImageText(ClientPtr client, ITclosurePtr c) if (!pGC) { free(c->data); free(c); + c = old_closure; err = BadAlloc; goto bail; } @@ -1464,6 +1468,7 @@ doImageText(ClientPtr client, ITclosurePtr c) FreeScratchGC(pGC); free(c->data); free(c); + c = old_closure; err = BadAlloc; goto bail; } diff --git a/xorg-server/dix/events.c b/xorg-server/dix/events.c index 7a1b1c3c6..4632bb7db 100644 --- a/xorg-server/dix/events.c +++ b/xorg-server/dix/events.c @@ -262,6 +262,11 @@ InputInfo inputInfo; EventSyncInfoRec syncEvents; +static struct DeviceEventTime { + Bool reset; + TimeStamp time; +} lastDeviceEventTime[MAXDEVICES]; + /** * The root window the given device is currently on. */ @@ -1043,33 +1048,73 @@ XineramaGetCursorScreen(DeviceIntPtr pDev) #define TIMESLOP (5 * 60 * 1000) /* 5 minutes */ static void -MonthChangedOrBadTime(InternalEvent *ev) +MonthChangedOrBadTime(CARD32 *ms) { /* If the ddx/OS is careless about not processing timestamped events from * different sources in sorted order, then it's possible for time to go * backwards when it should not. Here we ensure a decent time. */ - if ((currentTime.milliseconds - ev->any.time) > TIMESLOP) + if ((currentTime.milliseconds - *ms) > TIMESLOP) currentTime.months++; else - ev->any.time = currentTime.milliseconds; + *ms = currentTime.milliseconds; +} + +void +NoticeTime(const DeviceIntPtr dev, TimeStamp time) +{ + lastDeviceEventTime[XIAllDevices].time = currentTime; + lastDeviceEventTime[dev->id].time = currentTime; + + LastEventTimeToggleResetFlag(dev->id, TRUE); + LastEventTimeToggleResetFlag(XIAllDevices, TRUE); } static void -NoticeTime(InternalEvent *ev, DeviceIntPtr dev) +NoticeTimeMillis(const DeviceIntPtr dev, CARD32 *ms) { - if (ev->any.time < currentTime.milliseconds) - MonthChangedOrBadTime(ev); - currentTime.milliseconds = ev->any.time; - lastDeviceEventTime[XIAllDevices] = currentTime; - lastDeviceEventTime[dev->id] = currentTime; + TimeStamp time; + if (*ms < currentTime.milliseconds) + MonthChangedOrBadTime(ms); + time.months = currentTime.months; + time.milliseconds = *ms; + NoticeTime(dev, time); } void NoticeEventTime(InternalEvent *ev, DeviceIntPtr dev) { if (!syncEvents.playingEvents) - NoticeTime(ev, dev); + NoticeTimeMillis(dev, &ev->any.time); +} + +TimeStamp +LastEventTime(int deviceid) +{ + return lastDeviceEventTime[deviceid].time; +} + +Bool +LastEventTimeWasReset(int deviceid) +{ + return lastDeviceEventTime[deviceid].reset; +} + +void +LastEventTimeToggleResetFlag(int deviceid, Bool state) +{ + lastDeviceEventTime[deviceid].reset = state; +} + +void +LastEventTimeToggleResetAll(Bool state) +{ + DeviceIntPtr dev; + nt_list_for_each_entry(dev, inputInfo.devices, next) { + LastEventTimeToggleResetFlag(dev->id, FALSE); + } + LastEventTimeToggleResetFlag(XIAllDevices, FALSE); + LastEventTimeToggleResetFlag(XIAllMasterDevices, FALSE); } /************************************************************************** @@ -1093,7 +1138,7 @@ EnqueueEvent(InternalEvent *ev, DeviceIntPtr device) if (!xorg_list_is_empty(&syncEvents.pending)) tail = xorg_list_last_entry(&syncEvents.pending, QdEventRec, next); - NoticeTime((InternalEvent *)event, device); + NoticeTimeMillis(device, &ev->any.time); /* Fix for key repeating bug. */ if (device->key != NULL && device->key->xkbInfo != NULL && @@ -5276,8 +5321,12 @@ InitEvents(void) inputInfo.pointer = (DeviceIntPtr) NULL; for (i = 0; i < MAXDEVICES; i++) { + DeviceIntRec dummy; memcpy(&event_filters[i], default_filter, sizeof(default_filter)); - lastDeviceEventTime[i] = currentTime; + + dummy.id = i; + NoticeTime(&dummy, currentTime); + LastEventTimeToggleResetFlag(i, FALSE); } syncEvents.replayDev = (DeviceIntPtr) NULL; diff --git a/xorg-server/dix/globals.c b/xorg-server/dix/globals.c index 332b91f5c..ad9145b01 100644 --- a/xorg-server/dix/globals.c +++ b/xorg-server/dix/globals.c @@ -122,7 +122,6 @@ Bool party_like_its_1989 = FALSE; Bool whiteRoot = FALSE; TimeStamp currentTime; -TimeStamp lastDeviceEventTime[MAXDEVICES]; int defaultColorVisualClass = -1; int monitorResolution = 0; diff --git a/xorg-server/dix/window.c b/xorg-server/dix/window.c index cff341b65..92df1eb4c 100644 --- a/xorg-server/dix/window.c +++ b/xorg-server/dix/window.c @@ -3089,9 +3089,7 @@ dixSaveScreens(ClientPtr client, int on, int mode) DeviceIntPtr dev; UpdateCurrentTimeIf(); nt_list_for_each_entry(dev, inputInfo.devices, next) - lastDeviceEventTime[dev->id] = currentTime; - lastDeviceEventTime[XIAllDevices] = currentTime; - lastDeviceEventTime[XIAllMasterDevices] = currentTime; + NoticeTime(dev, currentTime); } SetScreenSaverTimer(); } diff --git a/xorg-server/exa/exa_migration_mixed.c b/xorg-server/exa/exa_migration_mixed.c index 5e0bf152a..cf66327b3 100644 --- a/xorg-server/exa/exa_migration_mixed.c +++ b/xorg-server/exa/exa_migration_mixed.c @@ -233,10 +233,13 @@ exaPrepareAccessReg_mixed(PixmapPtr pPixmap, int index, RegionPtr pReg) pPixmap->drawable.pScreen, pPixmap); - DamageRegister(&pPixmap->drawable, pExaPixmap->pDamage); - /* This ensures that pending damage reflects the current operation. */ - /* This is used by exa to optimize migration. */ - DamageSetReportAfterOp(pExaPixmap->pDamage, TRUE); + if (pExaPixmap->pDamage) { + DamageRegister(&pPixmap->drawable, pExaPixmap->pDamage); + /* This ensures that pending damage reflects the current + * operation. This is used by exa to optimize migration. + */ + DamageSetReportAfterOp(pExaPixmap->pDamage, TRUE); + } if (has_gpu_copy) { exaPixmapDirty(pPixmap, 0, 0, pPixmap->drawable.width, diff --git a/xorg-server/exa/exa_mixed.c b/xorg-server/exa/exa_mixed.c index 3e2dcf263..b43dfec42 100644 --- a/xorg-server/exa/exa_mixed.c +++ b/xorg-server/exa/exa_mixed.c @@ -106,10 +106,13 @@ exaCreatePixmap_mixed(ScreenPtr pScreen, int w, int h, int depth, pPixmap->drawable.pScreen, pPixmap); - DamageRegister(&pPixmap->drawable, pExaPixmap->pDamage); - /* This ensures that pending damage reflects the current operation. */ - /* This is used by exa to optimize migration. */ - DamageSetReportAfterOp(pExaPixmap->pDamage, TRUE); + if (pExaPixmap->pDamage) { + DamageRegister(&pPixmap->drawable, pExaPixmap->pDamage); + /* This ensures that pending damage reflects the current + * operation. This is used by exa to optimize migration. + */ + DamageSetReportAfterOp(pExaPixmap->pDamage, TRUE); + } } } diff --git a/xorg-server/hw/dmx/glxProxy/glxsingle.c b/xorg-server/hw/dmx/glxProxy/glxsingle.c index abfb880a3..679a302ea 100644 --- a/xorg-server/hw/dmx/glxProxy/glxsingle.c +++ b/xorg-server/hw/dmx/glxProxy/glxsingle.c @@ -349,25 +349,29 @@ __glXForwardAllWithReply(__GLXclientState * cl, GLbyte * pc) * get the reply from the back-end server */ _XReply(dpy, (xReply *) &be_reply, 0, False); - be_buf_size = be_reply.length << 2; - if (be_buf_size > 0) { - be_buf = (char *) malloc(be_buf_size); - if (be_buf) { - _XRead(dpy, be_buf, be_buf_size); + if (s == from_screen) { + /* Save data from last reply to send on to client */ + be_buf_size = be_reply.length << 2; + if (be_buf_size > 0) { + be_buf = malloc(be_buf_size); + if (be_buf) { + _XRead(dpy, be_buf, be_buf_size); + } + else { + /* Throw data on the floor */ + _XEatDataWords(dpy, be_reply.length); + return BadAlloc; + } } - else { - /* Throw data on the floor */ + } + else { + /* Just discard data from all replies before the last one */ + if (be_reply.length > 0) _XEatDataWords(dpy, be_reply.length); - return BadAlloc; - } } UnlockDisplay(dpy); SyncHandle(); - - if (s > from_screen && be_buf_size > 0) { - free(be_buf); - } } /* diff --git a/xorg-server/hw/dmx/glxProxy/glxvendor.c b/xorg-server/hw/dmx/glxProxy/glxvendor.c index 50d505c4b..b475daf0f 100644 --- a/xorg-server/hw/dmx/glxProxy/glxvendor.c +++ b/xorg-server/hw/dmx/glxProxy/glxvendor.c @@ -332,25 +332,29 @@ __glXVForwardAllWithReply(__GLXclientState * cl, GLbyte * pc) * get the reply from the back-end server */ _XReply(dpy, (xReply *) &be_reply, 0, False); - be_buf_size = be_reply.length << 2; - if (be_buf_size > 0) { - be_buf = (char *) malloc(be_buf_size); - if (be_buf) { - _XRead(dpy, be_buf, be_buf_size); + if (s == from_screen) { + /* Save data from last reply to send on to client */ + be_buf_size = be_reply.length << 2; + if (be_buf_size > 0) { + be_buf = malloc(be_buf_size); + if (be_buf) { + _XRead(dpy, be_buf, be_buf_size); + } + else { + /* Throw data on the floor */ + _XEatDataWords(dpy, be_reply.length); + return BadAlloc; + } } - else { - /* Throw data on the floor */ + } + else { + /* Just discard data from all replies before the last one */ + if (be_reply.length > 0) _XEatDataWords(dpy, be_reply.length); - return BadAlloc; - } } UnlockDisplay(dpy); SyncHandle(); - - if (s > from_screen && be_buf_size > 0) { - free(be_buf); - } } /* diff --git a/xorg-server/hw/xfree86/dixmods/Makefile.am b/xorg-server/hw/xfree86/dixmods/Makefile.am index 9933bc88d..3c43640ec 100644 --- a/xorg-server/hw/xfree86/dixmods/Makefile.am +++ b/xorg-server/hw/xfree86/dixmods/Makefile.am @@ -32,7 +32,7 @@ libglx_la_LIBADD = $(top_builddir)/glx/libglx.la $(GLX_SYS_LIBS) if AIGLX_DRI_LOADER libglx_la_LIBADD += $(top_builddir)/glx/libglxdri.la if NO_UNDEFINED -libglx_la_LIBADD += ../dri/libdri.la ../dri2/libdri2.la +libglx_la_LIBADD += $(LIBDRM_LIBS) $(PIXMAN_LIBS) endif endif libglx_la_SOURCES = glxmodule.c diff --git a/xorg-server/include/dix.h b/xorg-server/include/dix.h index 171e56e11..fa7ccd4a3 100644 --- a/xorg-server/include/dix.h +++ b/xorg-server/include/dix.h @@ -315,8 +315,19 @@ extern _X_EXPORT WindowPtr GetSpriteWindow(DeviceIntPtr pDev); extern _X_EXPORT void +NoticeTime(const DeviceIntPtr dev, + TimeStamp time); +extern _X_EXPORT void NoticeEventTime(InternalEvent *ev, DeviceIntPtr dev); +extern _X_EXPORT TimeStamp +LastEventTime(int deviceid); +extern _X_EXPORT Bool +LastEventTimeWasReset(int deviceid); +extern _X_EXPORT void +LastEventTimeToggleResetFlag(int deviceid, Bool state); +extern _X_EXPORT void +LastEventTimeToggleResetAll(Bool state); extern void EnqueueEvent(InternalEvent * /* ev */ , diff --git a/xorg-server/include/dixstruct.h b/xorg-server/include/dixstruct.h index 0be7f0e27..7711cde99 100644 --- a/xorg-server/include/dixstruct.h +++ b/xorg-server/include/dixstruct.h @@ -144,7 +144,6 @@ typedef struct _WorkQueue { } WorkQueueRec; extern _X_EXPORT TimeStamp currentTime; -extern _X_EXPORT TimeStamp lastDeviceEventTime[MAXDEVICES]; extern _X_EXPORT int CompareTimeStamps(TimeStamp /*a */ , diff --git a/xorg-server/os/WaitFor.c b/xorg-server/os/WaitFor.c index 393890f19..c5f4cd78b 100644 --- a/xorg-server/os/WaitFor.c +++ b/xorg-server/os/WaitFor.c @@ -561,7 +561,7 @@ NextDPMSTimeout(INT32 timeout) static CARD32 ScreenSaverTimeoutExpire(OsTimerPtr timer, CARD32 now, pointer arg) { - INT32 timeout = now - lastDeviceEventTime[XIAllDevices].milliseconds; + INT32 timeout = now - LastEventTime(XIAllDevices).milliseconds; CARD32 nextTimeout = 0; #ifdef DPMSExtension diff --git a/xorg-server/os/xdmcp.c b/xorg-server/os/xdmcp.c index 0538ac53e..11f11333d 100644 --- a/xorg-server/os/xdmcp.c +++ b/xorg-server/os/xdmcp.c @@ -1391,7 +1391,7 @@ recv_alive_msg(unsigned length) if (SessionRunning && AliveSessionID == SessionID) { /* backoff dormancy period */ state = XDM_RUN_SESSION; - if ((GetTimeInMillis() - lastDeviceEventTime[XIAllDevices].milliseconds) > + if ((GetTimeInMillis() - LastEventTime(XIAllDevices).milliseconds) > keepaliveDormancy * 1000) { keepaliveDormancy <<= 1; if (keepaliveDormancy > XDM_MAX_DORMANCY) diff --git a/xorg-server/xkeyboard-config/Makefile.am b/xorg-server/xkeyboard-config/Makefile.am index e0b3168bc..4cc825416 100644 --- a/xorg-server/xkeyboard-config/Makefile.am +++ b/xorg-server/xkeyboard-config/Makefile.am @@ -12,7 +12,7 @@ EXTRA_DIST=config.rpath COPYING README \ DISTCLEANFILES=intltool-extract intltool-merge intltool-update -# ACLOCAL_AMFLAGS = -I m4 +ACLOCAL_AMFLAGS = -I m4 sync-po: rsync -Lrtvz translationproject.org::tp/latest/xkeyboard-config/ po diff --git a/xorg-server/xkeyboard-config/rules/base.xml.in b/xorg-server/xkeyboard-config/rules/base.xml.in index 874b52eb6..64714675b 100644 --- a/xorg-server/xkeyboard-config/rules/base.xml.in +++ b/xorg-server/xkeyboard-config/rules/base.xml.in @@ -2528,10 +2528,11 @@ </variant> <variant> <configItem> - <name>uig</name> + <name>ug</name> + <_shortDescription>ug</_shortDescription> <_description>Uyghur</_description> <languageList> - <iso639Id>uig</iso639Id> + <iso639Id>ug</iso639Id> </languageList> </configItem> </variant> @@ -4411,7 +4412,7 @@ <variant> <configItem> <name>rue</name> - <_description>Pannonian Rusyn (homophonic)</_description> + <_description>Pannonian Rusyn</_description> <languageList> <iso639Id>rue</iso639Id> </languageList> diff --git a/xorg-server/xkeyboard-config/symbols/cn b/xorg-server/xkeyboard-config/symbols/cn index e6b2c525e..8c2ffe422 100644 --- a/xorg-server/xkeyboard-config/symbols/cn +++ b/xorg-server/xkeyboard-config/symbols/cn @@ -149,32 +149,21 @@ xkb_symbols "tib_asciinum" { key <AE10> { [ 0, 0x1000f20, 0x1000f08, 0x1000f12 ] }; # 0 ༠ ༈ ༒ }; -// Uyghur Standard Keyboard map for XKB/X.org +// Uyghur Standard Keyboard Map for XKB/X.Org // -// xkb version originally created by -// Abdusalam Abdurahman <Abdusalam.Abdurahman@gmail.com> -// slightly corrected according to feedback and submitted by +// XKB version in collaboration by Muhemmed Abdullah <muhammad@yulghun.com>, +// Abdussalam Abdurrahman <abdusalam.abdurahman@gmail.com>, and // Ekrem Tomur <ekrem.tomur@gmail.com> -partial alphanumeric_keys -xkb_symbols "uig" { +partial alphanumeric_keys +xkb_symbols "ug" { + include "us(basic)" name[Group1]= "Uyghur"; - key <TLDE> { [ grave, asciitilde ] }; - - key <AE01> { [ 1, exclam ] }; // 1 ! - key <AE02> { [ 2, at ] }; // 2 @ - key <AE03> { [ 3, numbersign ] }; // 3 # - key <AE04> { [ 4, dollar ] }; // 4 $ - key <AE05> { [ 5, percent ] }; // 5 % - key <AE06> { [ 6, asciicircum ] }; // 6 ^ - key <AE07> { [ 7, ampersand ] }; // 7 & - key <AE08> { [ 8, asterisk ] }; // 8 * key <AE09> { [ 9, parenright ] }; // 9 ) key <AE10> { [ 0, parenleft ] }; // 0 ( key <AE11> { [ minus, 0x1002014 ] }; // - — - key <AE12> { [ equal, plus ] }; // = + key <AD01> { [ 0x1000686, VoidSymbol ] }; // چ key <AD02> { [ 0x10006cb, VoidSymbol ] }; // ۋ @@ -199,7 +188,6 @@ xkb_symbols "uig" { key <AC08> { [ 0x1000643, 0x10006c6 ] }; // ك ۆ key <AC09> { [ 0x1000644, VoidSymbol ] }; // ل key <AC10> { [ Arabic_semicolon, colon ] }; // ؛ : - key <AC11> { [ apostrophe, quotedbl ] }; // ' " key <AB01> { [ 0x1000632, VoidSymbol ] }; // ز key <AB02> { [ 0x1000634, VoidSymbol ] }; // ش @@ -211,6 +199,4 @@ xkb_symbols "uig" { key <AB08> { [ Arabic_comma, 0x100203a ] }; // ، › key <AB09> { [ period, 0x1002039 ] }; // . ‹ key <AB10> { [ 0x1000626, Arabic_question_mark ] }; // ئ ؟ - - key <BKSL> { [ backslash, bar ] }; // \ | }; diff --git a/xorg-server/xkeyboard-config/symbols/rs b/xorg-server/xkeyboard-config/symbols/rs index 22ff2dae8..86b54632a 100644 --- a/xorg-server/xkeyboard-config/symbols/rs +++ b/xorg-server/xkeyboard-config/symbols/rs @@ -300,30 +300,28 @@ xkb_symbols "latinalternatequotes" { }; xkb_symbols "rue" { - // Homophonic layout for Pannonian Rusyn (spoken mainly in Serbia and - // Croatia by the Rusyn people), based on Ukrainian homophonic. - // Author: Ljubomir J. Papuga (Любомир Я. Папуґа) <papuga.rs@gmail.com> - - name[Group1]= "Pannonian Rusyn (homophonic)"; - - include "ua(homophonic)" - - key <TLDE> { [ grave, asciitilde ] }; - key <AE03> { [ 3, doublelowquotemark ] }; - key <AE04> { [ 4, rightdoublequotemark ] }; - key <AE07> { [ 7, EuroSign ] }; - key <AE11> { [ 0x002D, emdash ] }; - key <AE12> { [ equal, plus ] }; - - key <AD02> { [ Ukrainian_ie, Ukrainian_IE ] }; - key <AD06> { [ Cyrillic_yu, Cyrillic_YU ] }; - key <AD08> { [ Cyrillic_i, Cyrillic_I ] }; - key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] }; - key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; - - key <LSGT> { [ Ukrainian_yi, Ukrainian_YI ] }; - key <AB08> { [ comma, semicolon ] }; - key <AB09> { [ period, colon ] }; + // Layout for Pannonian Rusyn (spoken mainly in Serbia and + // Croatia by the Rusyn people), based on Serbian Cyrillic layout. + // Authors: + // Ljubomir J. Papuga (Любомир Я. Папуґа) <papuga@zoho.com> + // Mihajlo Hornjak <smeceiotpad@gmail.com> + + name[Group1]= "Pannonian Rusyn"; + + include "rs(basic)" + + key <TLDE> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; // ` + + key <AD01> { [ Cyrillic_ya, Cyrillic_YA ] }; // q + key <AD02> { [ Ukrainian_ie, Ukrainian_IE ] }; // w + key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; // ] + + key <AC05> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; // g + key <AC07> { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; // j + key <AC11> { [ Cyrillic_ghe, Cyrillic_GHE ] }; // ' + + key <AB01> { [ Cyrillic_yu, Cyrillic_YU ] }; // z + key <AB02> { [ Ukrainian_yi, Ukrainian_YI ] }; // x }; // EXTRAS: |