Hi Keith, Please consider applying to master.
Thanks.
>From 0356e4272e1d1755b80bf9494323704520b4180b Mon Sep 17 00:00:00 2001 From: Jon TURNEY <jon.tur...@dronecode.org.uk> Date: Mon, 3 Sep 2012 15:19:43 +0100 Subject: [PATCH] Allow DDX to provide a main() XQuartz already conditionally renames main() as dix_main() so it can provide it's own main(). This isn't ideal as it prevents libdix built this way from being useful with any other DDX. So instead, always name that function dix_main(), and provide a stub main() which just calls it where needed. Add a main() to XWin. It's no longer neccessary to link XWin and XQuartz with libmain. Future work: prototype dix_main() somewhere, without it ending up in sdksyms... Signed-off-by: Jon TURNEY <jon.tur...@dronecode.org.uk> Reviewed-by: Julien Cristau <jcris...@debian.org> --- configure.ac | 2 +- dix/Makefile.am | 3 ++- dix/main.c | 6 +----- dix/stubmain.c | 35 +++++++++++++++++++++++++++++++++++ hw/xwin/InitOutput.c | 6 ++++++ hw/xwin/Makefile.am | 2 +- 6 files changed, 46 insertions(+), 8 deletions(-) create mode 100644 dix/stubmain.c diff --git a/configure.ac b/configure.ac index 435a38f..44615cb 100644 --- a/configure.ac +++ b/configure.ac @@ -1960,7 +1960,7 @@ if test "x$XQUARTZ" = xyes; then AC_DEFINE(XQUARTZ,1,[Have Quartz]) AC_DEFINE(ROOTLESS,1,[Build Rootless code]) - XQUARTZ_LIBS="$MAIN_LIB $FB_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $XPSTUBS_LIB" + XQUARTZ_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $XPSTUBS_LIB" AC_SUBST([XQUARTZ_LIBS]) AC_CHECK_LIB([Xplugin],[xp_init],[:]) diff --git a/dix/Makefile.am b/dix/Makefile.am index b7358aa..e7ca236 100644 --- a/dix/Makefile.am +++ b/dix/Makefile.am @@ -4,7 +4,7 @@ AM_CPPFLAGS = -I$(top_srcdir)/include AM_CFLAGS = $(DIX_CFLAGS) libmain_la_SOURCES = \ - main.c + stubmain.c libdix_la_SOURCES = \ atom.c \ @@ -14,6 +14,7 @@ libdix_la_SOURCES = \ dispatch.c \ dispatch.h \ dixfonts.c \ + main.c \ dixutils.c \ enterleave.c \ enterleave.h \ diff --git a/dix/main.c b/dix/main.c index fb935c9..82b5ee7 100644 --- a/dix/main.c +++ b/dix/main.c @@ -125,14 +125,10 @@ BOOL serverRunning = FALSE; pthread_mutex_t serverRunningMutex = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t serverRunningCond = PTHREAD_COND_INITIALIZER; -int dix_main(int argc, char *argv[], char *envp[]); +#endif int dix_main(int argc, char *argv[], char *envp[]) -#else -int -main(int argc, char *argv[], char *envp[]) -#endif { int i; HWEventQueueType alwaysCheckForInput[2]; diff --git a/dix/stubmain.c b/dix/stubmain.c new file mode 100644 index 0000000..7efb4b8 --- /dev/null +++ b/dix/stubmain.c @@ -0,0 +1,35 @@ +/*********************************************************** + +Copyright 2012 Jon TURNEY + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +******************************************************************/ + +int dix_main(int argc, char *argv[], char *envp[]); + +/* + A default implementation of main, which can be overridden by the DDX + */ +int +main(int argc, char *argv[], char *envp[]) +{ + return dix_main(argc, argv, envp); +} diff --git a/hw/xwin/InitOutput.c b/hw/xwin/InitOutput.c index 04c17b7..23ab491 100644 --- a/hw/xwin/InitOutput.c +++ b/hw/xwin/InitOutput.c @@ -186,6 +186,12 @@ ddxBeforeReset(void) } #endif +int +main(int argc, char *argv[], char *envp[]) +{ + return dix_main(argc, argv, envp); +} + /* See Porting Layer Definition - p. 57 */ void ddxGiveUp(enum ExitCode error) diff --git a/hw/xwin/Makefile.am b/hw/xwin/Makefile.am index 93ce570..e390aa7 100644 --- a/hw/xwin/Makefile.am +++ b/hw/xwin/Makefile.am @@ -153,7 +153,7 @@ INCLUDES = -I$(top_srcdir)/miext/rootless XWIN_SYS_LIBS += -ldxguid -XWin_DEPENDENCIES = $(MULTIWINDOWEXTWM_LIBS) $(XWIN_GLX_LIBS) $(XWIN_LIBS) $(MAIN_LIB) $(XSERVER_LIBS) +XWin_DEPENDENCIES = $(MULTIWINDOWEXTWM_LIBS) $(XWIN_GLX_LIBS) $(XWIN_LIBS) $(XSERVER_LIBS) XWin_LDADD = $(MULTIWINDOW_LIBS) $(MULTIWINDOWEXTWM_LIBS) $(XWIN_GLX_LIBS) $(XWIN_GLX_LINK_FLAGS) $(XWIN_LIBS) $(MAIN_LIB) $(XSERVER_LIBS) $(XSERVER_SYS_LIBS) $(XWIN_SYS_LIBS) XWin_LDFLAGS = -mwindows -static -- 1.7.9
_______________________________________________ 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