Re: [PATCH 2/7] Allow DDX to provide a main()

2012-12-03 Thread Jon TURNEY
On 30/11/2012 23:50, Julien Cristau wrote:
> On Thu, Nov  8, 2012 at 13:41:14 +, Jon TURNEY wrote:
> 
>> 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...
>>
> Doesn't that mean adding the declaration in a file not listed by
> sdksyms.sh?

Um.  I think so.

> There's no above copyright notice.  Problably doesn't matter because
> this file is so trivial it's not copyrightable, but might as well...

Fixed

>> --- 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);
>> +}
>> +
> 
> I guess a later patch changes this to be different from the stub?

Yes, I have a number of patches which add things here.

___
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/7] Allow DDX to provide a main()

2012-12-01 Thread Julien Cristau
On Thu, Nov  8, 2012 at 13:41:14 +, Jon TURNEY wrote:

> 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...
> 
Doesn't that mean adding the declaration in a file not listed by
sdksyms.sh?

> Signed-off-by: Jon TURNEY 

Reviewed-by: Julien Cristau 

with a minor comment and small question below...

> ---
>  configure.ac |2 +-
>  dix/Makefile.am  |3 ++-
>  dix/main.c   |6 +-
>  dix/stubmain.c   |   33 +
>  hw/xwin/InitOutput.c |6 ++
>  hw/xwin/Makefile.am  |4 ++--
>  6 files changed, 45 insertions(+), 9 deletions(-)
>  create mode 100644 dix/stubmain.c
> 
> diff --git a/configure.ac b/configure.ac
> index 38ac240..e6f9cb7 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 000..25ef50d
> --- /dev/null
> +++ b/dix/stubmain.c
> @@ -0,0 +1,33 @@
> +/***
> +
> +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.
> +

There's no above copyright notice.  Problably doesn't matter because
this file is so trivial it's not copyrightable, but might as well...

> +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 4bcd3a0..fe8dcd4 100644
> --- a/hw/xwin/InitOutput.c
> +++ b/hw/xwin/InitOutput.c
> @@ -186,6 +186,12 @@ ddxBeforeReset(void)

Re: [PATCH 2/7] Allow DDX to provide a main()

2012-11-30 Thread Jon TURNEY
On 08/11/2012 13:41, Jon TURNEY wrote:
> 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 
> ---
>  configure.ac |2 +-
>  dix/Makefile.am  |3 ++-
>  dix/main.c   |6 +-
>  dix/stubmain.c   |   33 +
>  hw/xwin/InitOutput.c |6 ++
>  hw/xwin/Makefile.am  |4 ++--
>  6 files changed, 45 insertions(+), 9 deletions(-)
>  create mode 100644 dix/stubmain.c

Ping? Could this patch be reviewed, please?

___
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/7] Allow DDX to provide a main()

2012-11-08 Thread Jon TURNEY
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 
---
 configure.ac |2 +-
 dix/Makefile.am  |3 ++-
 dix/main.c   |6 +-
 dix/stubmain.c   |   33 +
 hw/xwin/InitOutput.c |6 ++
 hw/xwin/Makefile.am  |4 ++--
 6 files changed, 45 insertions(+), 9 deletions(-)
 create mode 100644 dix/stubmain.c

diff --git a/configure.ac b/configure.ac
index 38ac240..e6f9cb7 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 000..25ef50d
--- /dev/null
+++ b/dix/stubmain.c
@@ -0,0 +1,33 @@
+/***
+
+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 4bcd3a0..fe8dcd4 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 3fcaf9d..6aac6a9 100644
--- a/hw/xwin/Makefile.am
+++ b/hw/xwin/Makefile.am
@@ -149,8 +149,8 @@ INCLUDES = -I$(top_srcdir)/miext/rootless
 
 XWIN_SYS_LIBS += -ldxguid
 
-XWin_DEPENDENCIES = $(MULTIWINDOWEXTWM_LIBS) $(XWIN_GLX_LIBS) $(XWIN_LIBS) 
$(MAIN_LIB) $(XSERVER_LIBS)
-XWin_LDADD = $(MULTIWINDOWEXTWM_LIBS) $(XWIN_GLX_LIBS) $(X