Re: [PATCH] doc: Removed redundant xslt output elements.

2014-11-27 Thread Peter Hutterer
On Thu, Nov 27, 2014 at 12:30:52PM -0800, Jon A. Cruz wrote:
> Removed  elements that were duplicated but with attributes in
> a different order. Standard tools are required to ignore the order of
> attributes in an element.
> 
> Signed-off-by: Jon A. Cruz 

Reviewed-by: Peter Hutterer 

Cheers,
   Peter

> ---
>  doc/publican/protocol-interfaces-to-docbook.xsl | 1 -
>  doc/publican/protocol-to-docbook.xsl| 1 -
>  2 files changed, 2 deletions(-)
> 
> diff --git a/doc/publican/protocol-interfaces-to-docbook.xsl 
> b/doc/publican/protocol-interfaces-to-docbook.xsl
> index ad6bdda..9cf0695 100644
> --- a/doc/publican/protocol-interfaces-to-docbook.xsl
> +++ b/doc/publican/protocol-interfaces-to-docbook.xsl
> @@ -1,6 +1,5 @@
>  
>   xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> -
>  
>  
>  
> diff --git a/doc/publican/protocol-to-docbook.xsl 
> b/doc/publican/protocol-to-docbook.xsl
> index 939ba40..443228d 100644
> --- a/doc/publican/protocol-to-docbook.xsl
> +++ b/doc/publican/protocol-to-docbook.xsl
> @@ -1,6 +1,5 @@
>  
>   xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> -
>  
>  
>  
> -- 
> 1.9.1
> 
> ___
> wayland-devel mailing list
> wayland-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
> 
___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


Re: [PATCH 6/9] doc: Added \code tags around sample code in doxygen comments

2014-11-27 Thread Bill Spitzak
More experiments, this time with Doxygen 1.8.6. Apparently the ~~~ 
markers (called "Markdown support" or "Fenced code blocks") were 
introduced in 1.8. Maybe config needs to check for this? Indeed ~~~ 
produces code samples now.


It appears aliases (but not other commands) work inside ~~~. They do not 
work inside \code.


There is a bug that causes asterisks: if a \code is anywhere earlier in 
the source code (ie it can be in a different comment block) then when a 
\comment is encountered in ~~~ it puts the asterisks on the start of 
every remaining line. I would assume this is a Doxygen bug.


I think the fix is to remove \code everywhere and use the (nicer-looking 
imho) ~~~ delimiters. It may also be useful to require the new Doxygen 
in config.


On 11/27/2014 02:53 AM, Pekka Paalanen wrote:

On Wed, 26 Nov 2014 10:32:56 -0800
Bill Spitzak  wrote:


On 11/25/2014 11:51 PM, Pekka Paalanen wrote:


What \comment-line command are you looking for?

I see you reformatted


- * wl_list_insert(&foo_list, &item1.link);   \comment{Pushes item1 at the head}


but I assume you mean something else?


No I meant that. I thought somebody had made the comment command to
produce "/* text */". Apparently however this is a holdover from javadoc
or something and doxygen does not do it.


Sorry?

doc/doxygen/wayland.doxygen.in has:
ALIASES+= comment{1}="/* \1 */"

What's wrong with that?


I did some web searching, and everybody says the only way to do a
comment is to use a different comment style that can be nested. Since
C-style comments don't nest you have to use something else if the
doxygen comment is C-style. The doxygen code tag appears to make it
entirely literal, the only thing it recognizes is \endcode.

Not sure if it would be acceptable to use C++ comments in Wayland
source, but that would be a solution. It was how I got around this
problem before.

Another solution is to get Doxygen to produce code-like output but where
commands can be interpreted. Using  and replacing every space with
 and every newline with  works but is really ugly.



FWIW, with the Doxygen version I have, that \comment{foo} did
produce /* foo */ in the output, just like one would expect, and it
worked nicely where it was used.

Our style is to use traditional C comments, not C++.


Thanks,
pq



___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


[PATCH] doc: Removed redundant xslt output elements.

2014-11-27 Thread Jon A. Cruz
Removed  elements that were duplicated but with attributes in
a different order. Standard tools are required to ignore the order of
attributes in an element.

Signed-off-by: Jon A. Cruz 
---
 doc/publican/protocol-interfaces-to-docbook.xsl | 1 -
 doc/publican/protocol-to-docbook.xsl| 1 -
 2 files changed, 2 deletions(-)

diff --git a/doc/publican/protocol-interfaces-to-docbook.xsl 
b/doc/publican/protocol-interfaces-to-docbook.xsl
index ad6bdda..9cf0695 100644
--- a/doc/publican/protocol-interfaces-to-docbook.xsl
+++ b/doc/publican/protocol-interfaces-to-docbook.xsl
@@ -1,6 +1,5 @@
 
 http://www.w3.org/1999/XSL/Transform";>
-
 
 
 
diff --git a/doc/publican/protocol-to-docbook.xsl 
b/doc/publican/protocol-to-docbook.xsl
index 939ba40..443228d 100644
--- a/doc/publican/protocol-to-docbook.xsl
+++ b/doc/publican/protocol-to-docbook.xsl
@@ -1,6 +1,5 @@
 
 http://www.w3.org/1999/XSL/Transform";>
-
 
 
 
-- 
1.9.1

___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


Re: [PATCH 2/6] Attach input profiles and build corresponding LUTs

2014-11-27 Thread Kai-Uwe Behrmann
Am 27.11.2014 um 15:58 schrieb Niels Ole Salscheider:
>  #define WL_HIDE_DEPRECATED
>  #include 
>
> @@ -40,6 +41,10 @@ extern "C" {
>
>  #include "config-parser.h"
>  #include "zalloc.h"
>
> +#ifdef HAVE_LCMS
> +#include 
> +#endif
> +
>
>  #ifndef MIN
>  #define MIN(x,y) (((x) < (y)) ? (x) : (y))
>  #endif
>
> @@ -179,6 +184,24 @@ enum weston_mode_switch_op {
>
>   WESTON_MODE_SWITCH_RESTORE_NATIVE
>  
>  };
>
> +struct weston_clut {
> + unsigned points;
> + char *data;
> +};
> +
> +struct weston_colorspace {
> +#ifdef HAVE_LCMS
> + cmsHPROFILE lcms_handle;
> +#endif
> + struct weston_clut clut;
> +
> + int destroyable;
> + int refcount;
> + int input;
> +
> + struct weston_compositor *compositor;
> +};
>> Note, that compositor.h is a public, installed header. You cannot use
>> HAVE_LCMS, because any external project using this header would then
>> receive the definition based on its own configuration, not how the
>> Weston that is already installed was configured.

Agreed, lcms internals are not nice to get exposed at this level.


Generally speaking, lcms provides a great API for a CMM. On the other
side, lcms is just one CMM and people in the open source world decided
many times to define and implement different API's. E.g. ArgyllCMS
(features, speed), SampleICC (spec playground) and Mozilla/Chrome with
qcms (secuirity, speed). So it is not wise to stick to especially one
CMM, be it lcms or whatever.

A CMM module can register its own functions for their handle type. You
could either wrap the CMM functions or use initial dummy functions
instead for function pointers. The type of the handle is not really
needed to get exposed. As long as the CMM registers its API at startup,
that procedure is simple.

A different approach is to store the data blob of the profile. The lcms
expanded profile handle needs certainly more memory, than the plain
memory block. And loading the profile on the fly is really fast. You
need the CMM profile handle mostly in the weston_build_clut() function
and for the header ID computation in other places. So profile memory
blob and profile header ID would suffice?

Then following might work out for the later approach:

+struct weston_colorspace {
+
+   void * profile_data;
+   int profile_data_size;
+   unsigned char profile_id[16];
+
+   struct weston_clut clut;
+
+   int destroyable;
+   int refcount;
+   int input;
+
+   struct weston_compositor *compositor;
+};


This opens the path to exchange the CMM without much fuzz on start time
depending on the system requirements.

Thanks
Kai-Uwe

___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


[PATCH wayland]scanner.c: Use WL_PRINTF instead of __attribute__((format(printf)))

2014-11-27 Thread Seedo Eldho Paul
Signed-off-by: Seedo Eldho Paul 
---
 src/scanner.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/scanner.c b/src/scanner.c
index fa8e0c0..ca03c57 100644
--- a/src/scanner.c
+++ b/src/scanner.c
@@ -199,7 +199,7 @@ static const char *indent(int n)
 }
 
 static void
-desc_dump(char *desc, const char *fmt, ...) 
__attribute__((format(printf,2,3)));
+desc_dump(char *desc, const char *fmt, ...) WL_PRINTF(2, 3);
 
 static void
 desc_dump(char *desc, const char *fmt, ...)
-- 
1.9.1

___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


Re: [PATCH 2/6] Attach input profiles and build corresponding LUTs

2014-11-27 Thread Niels Ole Salscheider
Hi,

> first a general question, since I'm at loss here on the big picture:
> How does all this relate to the cms-static and cms-colord modules
> already in Weston?
> 
> Are those modules only about configuring the output's color space?
> And then this work simply leverages that to have some output color
> spaces to work with?
> 
> Hmm, cms-static/colord set the gamma ramps..? So the hardware LUT?

Yes, cms-static and cms-colord allow to get a color space for each output. 
This is done by querying colord or by reading a static configuration from 
weston.ini.
Without my patches, only the hardware LUT is programmed with the gamma ramp 
from the corresponding profile. My patches reuse the existing modules to get 
the profile data for each output but then to do full color correction.

> On Mon, 27 Oct 2014 18:54:06 +0100
> 
> Niels Ole Salscheider  wrote:
> > On Wednesday 15 October 2014, 21:54:37, Bryce Harrington wrote:
> > > On Mon, Oct 13, 2014 at 07:40:47PM +0200, Niels Ole Salscheider wrote:
> > > > This implements the functionality to attach a profile to a surface
> > > > in weston. An LUT is built from the profile that can be used to
> > > > transform colors from the input color space to the blending color
> > > > space.
> > > > 
> > > > An sRGB color space is assumed for all newly created outputs
> > > > 
> > > > This patch uses the sRGB color space as blending space because it
> > > > uses 8 bit LUTs for now and I want to avoid additional banding. In
> > > > the long term we should use a linear blending space though to get
> > > > correct results.
> > > > 
> > > > Signed-off-by: Niels Ole Salscheider 
> > > > ---
> > > > 
> > > >  Makefile.am  |   3 +
> > > >  configure.ac |   2 +-
> > > >  src/compositor.c | 411
> > > >  ++-
> > > >  src/compositor.h
> > > >  
> > > >  |  41 ++
> > > >  
> > > >  4 files changed, 453 insertions(+), 4 deletions(-)
> > > > 
> > > > diff --git a/Makefile.am b/Makefile.am
> > > > index 3af3b46..1ecab56 100644
> > > > --- a/Makefile.am
> > > > +++ b/Makefile.am
> > > > @@ -45,6 +45,9 @@ weston_CPPFLAGS = $(AM_CPPFLAGS) -DIN_WESTON
> > > > 
> > > >  weston_CFLAGS = $(GCC_CFLAGS) $(COMPOSITOR_CFLAGS)
> > > >  $(LIBUNWIND_CFLAGS)
> > > >  weston_LDADD = $(COMPOSITOR_LIBS) $(LIBUNWIND_LIBS) \
> > > >  
> > > > $(DLOPEN_LIBS) -lm libshared.la
> > > > 
> > > > +if HAVE_LCMS
> > > > +weston_LDADD += $(LCMS_LIBS)
> > > > +endif
> > > > 
> > > >  weston_SOURCES =   \
> > > >  
> > > > src/git-version.h   \
> > > > 
> > > > diff --git a/configure.ac b/configure.ac
> > > > index 1c133bd..00b7cca 100644
> > > > --- a/configure.ac
> > > > +++ b/configure.ac
> > > > @@ -59,7 +59,7 @@ AC_CHECK_HEADERS([execinfo.h])
> > > > 
> > > >  AC_CHECK_FUNCS([mkostemp strchrnul initgroups posix_fallocate])
> > > > 
> > > > -COMPOSITOR_MODULES="wayland-server >= 1.5.91 pixman-1 >= 0.25.2"
> > > > +COMPOSITOR_MODULES="wayland-server >= 1.5.91 pixman-1 >= 0.25.2
> > > > glib-2.0"
> > > 
> > > Depending on glib seems a pretty big step.  I see it's needed for
> > > GHashTable, anything else?
> > > 
> > > Wayland has a wl_map data structure; could that be used instead of
> > > GHashTable, in order to avoid the glib dependency?
> 
> Yeah, we can't have an unconditional dependency to glib.
> 
> > Yes, it is only needed for GHashTable. "cms-colord.c" already uses
> > GHashTable and therefore I used it in my code, too. But the use in
> > "cms-colord.c" only adds a dependency to glib if weston is build with
> > colord support, so this might be more acceptable.
> > I could use another map implementation, e. g. the one from wayland - but
> > then we would have to move it from "wayland-private.h" to some header
> > that gets installed.
> 
> wl_map from wayland-private.h is not going to happen either. libwayland
> doesn't need a wl_map in its public API, so it has no place to export
> it either, even if it was generic.
> 
> I think you need to copy in a hash table implementation, if it is
> needed regardless of... of... where is the switch to disable color
> management support?

It is enabled if weston is compiled with LCMS and disabled otherwise (or do 
you see any reason why you would want to have LCMS but not full color 
management?).

> Or well, just do what Jasper said.

Ok, I'll do so.

> > > >  AC_ARG_ENABLE(egl, [  --disable-egl],,
> > > >  
> > > >enable_egl=yes)
> > > > 
> > > > diff --git a/src/compositor.c b/src/compositor.c
> > > > index 29731c7..4f959a4 100644
> > > > --- a/src/compositor.c
> > > > +++ b/src/compositor.c
> > > > @@ -56,6 +56,7 @@
> > > > 
> > > >  #include "compositor.h"
> > > >  #include "scaler-server-protocol.h"
> > > >  #include "presentation_timing-server-protocol.h"
> > > > 
> > > > +#include "cms-server-protocol.h"
> > > > 
> > > >  #include "../shared/os-compatibility.h"
> > > >  #include "git-version.h"
> > > >  #i

Re: [PATCH wayland] doc: fixed grammar and a typo

2014-11-27 Thread Pekka Paalanen
On Mon, 17 Nov 2014 14:59:14 -0600
Derek Foreman  wrote:

> Signed-off-by: Derek Foreman 
> ---
>  src/wayland-client.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/src/wayland-client.c b/src/wayland-client.c
> index 01629e0..4067cfd 100644
> --- a/src/wayland-client.c
> +++ b/src/wayland-client.c
> @@ -427,8 +427,8 @@ wl_proxy_add_listener(struct wl_proxy *proxy,
>   * Gets the address to the proxy's listener; which is the listener set with
>   * \ref wl_proxy_add_listener.
>   *
> - * This function is useful in client with multiple listeners on the same
> - * interface to allow the identification of which code to eexecute.
> + * This function is useful in clients with multiple listeners on the same
> + * interface to allow the identification of which code to execute.
>   *
>   * \memberof wl_proxy
>   */

Pushed.

Thanks,
pq
___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


Re: [PATCH weston v2] input: Use slightly less obscure logic in evdev_notify_keyboard_focus()

2014-11-27 Thread Pekka Paalanen
On Wed, 19 Nov 2014 11:04:12 -0600
Derek Foreman  wrote:

> While the test is actually correct (for non-negative numbers), it's not
> at all clear and seems to be an accidental order of operations mistake.
> 
> Also, add an assert() to make sure this number is never negative.
> 
> Closes bug 86346 - https://bugs.freedeskto.org/show_bug.cgi?id=86346
> 
> Signed-off-by: Derek Foreman 
> ---
> 
> This version just moves the assert directly after the decrement...
> 
>  src/input.c   | 1 +
>  src/libinput-device.c | 2 +-
>  2 files changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/src/input.c b/src/input.c
> index 5f19875..cd5e10b 100644
> --- a/src/input.c
> +++ b/src/input.c
> @@ -2203,6 +2203,7 @@ WL_EXPORT void
>  weston_seat_release_keyboard(struct weston_seat *seat)
>  {
>   seat->keyboard_device_count--;
> + assert(seat->keyboard_device_count >= 0);
>   if (seat->keyboard_device_count == 0) {
>   weston_keyboard_set_focus(seat->keyboard, NULL);
>   weston_keyboard_cancel_grab(seat->keyboard);
> diff --git a/src/libinput-device.c b/src/libinput-device.c
> index 0e3f46d..8a48905 100644
> --- a/src/libinput-device.c
> +++ b/src/libinput-device.c
> @@ -470,7 +470,7 @@ evdev_notify_keyboard_focus(struct weston_seat *seat,
>  {
>   struct wl_array keys;
>  
> - if (!seat->keyboard_device_count > 0)
> + if (seat->keyboard_device_count == 0)
>   return;
>  
>   wl_array_init(&keys);

Pushed with Marek's R-b.

Thanks,
pq
___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


Re: [PATCH 2/6] Attach input profiles and build corresponding LUTs

2014-11-27 Thread Pekka Paalanen
Hi,

first a general question, since I'm at loss here on the big picture:
How does all this relate to the cms-static and cms-colord modules
already in Weston?

Are those modules only about configuring the output's color space?
And then this work simply leverages that to have some output color
spaces to work with?

Hmm, cms-static/colord set the gamma ramps..? So the hardware LUT?


On Mon, 27 Oct 2014 18:54:06 +0100
Niels Ole Salscheider  wrote:

> On Wednesday 15 October 2014, 21:54:37, Bryce Harrington wrote:
> > On Mon, Oct 13, 2014 at 07:40:47PM +0200, Niels Ole Salscheider wrote:
> > > This implements the functionality to attach a profile to a surface
> > > in weston. An LUT is built from the profile that can be used to
> > > transform colors from the input color space to the blending color
> > > space.
> > > 
> > > An sRGB color space is assumed for all newly created outputs
> > > 
> > > This patch uses the sRGB color space as blending space because it
> > > uses 8 bit LUTs for now and I want to avoid additional banding. In
> > > the long term we should use a linear blending space though to get
> > > correct results.
> > > 
> > > Signed-off-by: Niels Ole Salscheider 
> > > ---
> > > 
> > >  Makefile.am  |   3 +
> > >  configure.ac |   2 +-
> > >  src/compositor.c | 411
> > >  ++- src/compositor.h
> > >  |  41 ++
> > >  4 files changed, 453 insertions(+), 4 deletions(-)
> > > 
> > > diff --git a/Makefile.am b/Makefile.am
> > > index 3af3b46..1ecab56 100644
> > > --- a/Makefile.am
> > > +++ b/Makefile.am
> > > @@ -45,6 +45,9 @@ weston_CPPFLAGS = $(AM_CPPFLAGS) -DIN_WESTON
> > > 
> > >  weston_CFLAGS = $(GCC_CFLAGS) $(COMPOSITOR_CFLAGS) $(LIBUNWIND_CFLAGS)
> > >  weston_LDADD = $(COMPOSITOR_LIBS) $(LIBUNWIND_LIBS) \
> > >  
> > >   $(DLOPEN_LIBS) -lm libshared.la
> > > 
> > > +if HAVE_LCMS
> > > +weston_LDADD += $(LCMS_LIBS)
> > > +endif
> > > 
> > >  weston_SOURCES = \
> > >  
> > >   src/git-version.h   \
> > > 
> > > diff --git a/configure.ac b/configure.ac
> > > index 1c133bd..00b7cca 100644
> > > --- a/configure.ac
> > > +++ b/configure.ac
> > > @@ -59,7 +59,7 @@ AC_CHECK_HEADERS([execinfo.h])
> > > 
> > >  AC_CHECK_FUNCS([mkostemp strchrnul initgroups posix_fallocate])
> > > 
> > > -COMPOSITOR_MODULES="wayland-server >= 1.5.91 pixman-1 >= 0.25.2"
> > > +COMPOSITOR_MODULES="wayland-server >= 1.5.91 pixman-1 >= 0.25.2 glib-2.0"
> > 
> > Depending on glib seems a pretty big step.  I see it's needed for
> > GHashTable, anything else?
> > 
> > Wayland has a wl_map data structure; could that be used instead of
> > GHashTable, in order to avoid the glib dependency?

Yeah, we can't have an unconditional dependency to glib.

> Yes, it is only needed for GHashTable. "cms-colord.c" already uses GHashTable 
> and therefore I used it in my code, too. But the use in "cms-colord.c" only 
> adds a dependency to glib if weston is build with colord support, so this 
> might be more acceptable.
> I could use another map implementation, e. g. the one from wayland - but then 
> we would have to move it from "wayland-private.h" to some header that gets 
> installed.

wl_map from wayland-private.h is not going to happen either. libwayland
doesn't need a wl_map in its public API, so it has no place to export
it either, even if it was generic.

I think you need to copy in a hash table implementation, if it is
needed regardless of... of... where is the switch to disable color
management support?

Or well, just do what Jasper said.

> > >  AC_ARG_ENABLE(egl, [  --disable-egl],,
> > >  
> > >enable_egl=yes)
> > > 
> > > diff --git a/src/compositor.c b/src/compositor.c
> > > index 29731c7..4f959a4 100644
> > > --- a/src/compositor.c
> > > +++ b/src/compositor.c
> > > @@ -56,6 +56,7 @@
> > > 
> > >  #include "compositor.h"
> > >  #include "scaler-server-protocol.h"
> > >  #include "presentation_timing-server-protocol.h"
> > > 
> > > +#include "cms-server-protocol.h"
> > > 
> > >  #include "../shared/os-compatibility.h"
> > >  #include "git-version.h"
> > >  #include "version.h"
> > > 
> > > @@ -518,7 +519,8 @@ surface_state_handle_buffer_destroy(struct wl_listener
> > > *listener, void *data)> 
> > >  }
> > >  
> > >  static void
> > > 
> > > -weston_surface_state_init(struct weston_surface_state *state)
> > > +weston_surface_state_init(struct weston_surface_state *state,
> > > +   struct weston_compositor *compositor)
> > > 
> > >  {
> > >  
> > >   state->newly_attached = 0;
> > >   state->buffer = NULL;
> > > 
> > > @@ -539,6 +541,8 @@ weston_surface_state_init(struct weston_surface_state
> > > *state)> 
> > >   state->buffer_viewport.buffer.src_width = wl_fixed_from_int(-1);
> > >   state->buffer_viewport.surface.width = -1;
> > >   state->buffer_viewport.changed = 0;
> > > 
> > > +
> > > + state->colorspace = &compositor->srgb_colorspace;
> > > 
> > >  }
> > >  
> > > 

Re: [PATCH 1/6] Add cms protocol

2014-11-27 Thread Pekka Paalanen
Hi,

I had a quick look of our previous discussion to refresh my mind. It is
very good that you moved to using a protocol object for a color
profile, and fd passing for the profile data.

Here's some comments.

On Mon, 13 Oct 2014 19:40:46 +0200
Niels Ole Salscheider  wrote:

> The cms protocol allows to attach an ICC profile to a surface. It also tells
> the client about the blending color space and the color spaces of all outputs.
> 
> Signed-off-by: Niels Ole Salscheider 
> ---
>  Makefile.am  |  15 +--
>  protocol/cms.xml | 132 
> +++
>  2 files changed, 143 insertions(+), 4 deletions(-)
>  create mode 100644 protocol/cms.xml
> 

> diff --git a/protocol/cms.xml b/protocol/cms.xml
> new file mode 100644
> index 000..34c1b16
> --- /dev/null
> +++ b/protocol/cms.xml
> @@ -0,0 +1,132 @@
> +
> +
> +
> +  
> +Copyright © 2014 Niels Ole Salscheider

> +  
> +
> +  
> +

So techincally speaking, wl_cms is a global singleton. That should be
mentioned here, so it's obvious that creating a wl_cms object just
allows you to access the interface, but has no state or other effects.

> +  This interface allows to attach a color space to a wl_surface. This is
> +  used by the compositor to display the colors correctly. For this, the
> +  compositor converts any attached surfaces to the blending color space
> +  before the blending operations. After blending, the output surface is
> +  converted to the color space of the output device.
> +  This interface also provides requests for the sRGB and the blending 
> color
> +  space. It further allows to create a color space from an ICC profile.
> +  The client is informed by an event if the color space of one of the
> +  outputs changes.
> +
> +
> +
> +  
> +With this request, the color space of a wl_surface can be set.
> +Initially, the sRGB colorspace as returned by the srgb_colorspace
> +request is attached to a surface.

Need to tell about the double-buffering and interaction with
wl_surface.commit.

> +  
> +  
> +  
> +
> +
> +
> +  
> +This request allows to create a wl_cms_colorspace object from an ICC
> +profile. The fd argument is the file descriptor to the ICC profile.
> +  
> +  
> +  

No need for a size argument? You assume the whole file from zero to end
is the profile? How does one get the size?

You should also carefully specify, what the data behind the fd is. Do
you need an extra argument to specify a type? Maybe in the future one
would like to add another type as an alternative?

For reference, see wl_keyboard.keymap event.

> +
> +
> +
> +  
> +This request returns a wl_cms_colorspace object for the requested

It does not "return" anything. This request creates a wl_cms_colorspace
object that refers to the color profile of the given output. (I want to
avoid the term "return" in protocol language, because "return" implies
a roundtrip. Requests are semantically not function calls either, a
common misconception.) This applies to most requests below also.

> +output. A client can use this when it does not want its surfaces to 
> be
> +color-corrected. In this case it can attach the color space of its 
> main
> +output to its surfaces.
> +  
> +  
> +  
> +
> +
> +
> +  

I think the summary is not right, is it?

> +This request returns a wl_cms_colorspace object for the sRGB color
> +space. The sRGB color space is initially attached to all surfaces.

I like this very much: a shorthand for getting an object for a standard
color space.

> +  
> +  
> +
> +
> +
> +  
> +This request returns a wl_cms_colorspace object for the blending 
> color
> +space of the compositor. All surfaces are converted by the compositor
> +to the blending color space before the blending operations. A client
> +should render in this color space if it does any color conversion on
> +its own.
> +  
> +  
> +
> +
> +
> +  
> +This event will be sent when the color space of an output is changed.

Oh, so output color space can change?
Ok, I assume the correct reaction from a client is to get the output
color space again.

> +  
> +  
> +
> +
> +
> +   + summary="the passed icc data is invalid" />

You forgot to document this in the request that may raise this error.

Protocol errors are always fatal. Is invalid ICC data reason enough to
disconnect the whole client? It's certainly easy and clear.

However, I saw Bryce mentioning different ICC versions. If the
compositor understands only version 2, but a client provides a correct
version 4 profile, does it get killed for it?

I think you may want an explicit profile format argument, that
unambiguously describes what the format is. Actually, you are 

Re: [PATCH 3/9] doc: preserve links produced by Doxygen

2014-11-27 Thread Pekka Paalanen
On Wed, 26 Nov 2014 11:24:28 -0800
"Jon A. Cruz"  wrote:

> 
> 
> On 11/26/2014 10:22 AM, Bill Spitzak wrote:
> > On 11/25/2014 11:52 PM, Pekka Paalanen wrote:
> > 
> >> Or are duplicates perhaps due to us having, say, struct wl_display a
> >> different thing on server vs. client?
> > 
> > The duplicates are due mostly to wl_list (and similar things) being
> > documented twice. But I think doxygen does generate some identical tags
> > for the server and client documentation. The solution may be to edit one
> > of these and add an extra letter to all the tags so there are no
> > conflicts. Telling doxygen to document both in one pass caused it to mix
> > all the calls together, probably a bad idea.
> 
> I definitely think this sounds like an issue I should look into. One of
> the projects I worked on was to figure out how to create design
> documents from doxygen, and to coordinate design docs from multiple
> teams working on multiple projects/features.
> 
> One key to getting overall documentation to work was to coordinate
> identifiers to either end up with different ones or unified ones on a
> case by case basis.
> 
> The *ideal* would be to get a single unified Doxygen pass working.
> However, it does warrant investigation as to how close to that a
> pragmatic solution appropriate to Wayland would get us. Two passes is
> not that bad. Once I start to get details and options figured out it
> definitely looks like Bill will be able to give feedback and guidance.

Please do.

If you need it, it is perfectly ok to have server and client side
passes separate. I'd like them to be separate HTML pages, too. It
doesn't hurt, if we happen to get duplicate documentation for things
like wl_list, one for server and one for client. The important thing is
to never mix up server stuff with client stuff.

Btw. libwayland-cursor is client side stuff and a separate library.

For example: struct wl_display is very different between server and
client. 

Struct wl_buffer has three completely different meanings:

- client side public API: it is a syntactic type without an actual
  definition: the real struct behind it is wl_proxy.

- server side public API: it is a deprecated real type with public
  members.

- libwayland internal API: a ring byte buffer, completely contained in
  src/connection.c, used by both server and client side internal code.

Luckily connection.c probably should not be included in the generated
docs, so we can overlook the third meaning.


Thanks,
pq
___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


Re: [PATCH 6/9] doc: Added \code tags around sample code in doxygen comments

2014-11-27 Thread Pekka Paalanen
On Wed, 26 Nov 2014 10:32:56 -0800
Bill Spitzak  wrote:

> On 11/25/2014 11:51 PM, Pekka Paalanen wrote:
> 
> > What \comment-line command are you looking for?
> >
> > I see you reformatted
> >
>  - * wl_list_insert(&foo_list, &item1.link);   \comment{Pushes item1 at 
>  the head}
> >
> > but I assume you mean something else?
> 
> No I meant that. I thought somebody had made the comment command to 
> produce "/* text */". Apparently however this is a holdover from javadoc 
> or something and doxygen does not do it.

Sorry?

doc/doxygen/wayland.doxygen.in has:
ALIASES+= comment{1}="/* \1 */"

What's wrong with that?

> I did some web searching, and everybody says the only way to do a 
> comment is to use a different comment style that can be nested. Since 
> C-style comments don't nest you have to use something else if the 
> doxygen comment is C-style. The doxygen code tag appears to make it 
> entirely literal, the only thing it recognizes is \endcode.
> 
> Not sure if it would be acceptable to use C++ comments in Wayland 
> source, but that would be a solution. It was how I got around this 
> problem before.
> 
> Another solution is to get Doxygen to produce code-like output but where 
> commands can be interpreted. Using  and replacing every space with 
>  and every newline with  works but is really ugly.
> 

FWIW, with the Doxygen version I have, that \comment{foo} did
produce /* foo */ in the output, just like one would expect, and it
worked nicely where it was used.

Our style is to use traditional C comments, not C++.


Thanks,
pq
___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


Re: [PATCH weston 1/2] compositor: add weston_surface_set_description()

2014-11-27 Thread Pekka Paalanen
On Thu, 27 Nov 2014 10:17:21 +0200
Giulio Camuffo  wrote:

> Just a quick comment below, I haven't looked at it carefully yet.
> 
> --
> Giulio
> 
> 2014-11-27 9:07 GMT+02:00 Pekka Paalanen :
> > From: Pekka Paalanen 
> >
> > When printing out logs from Weston's actions, mainly for debugging, it
> > can be very difficult to identify the different surfaces.  Inspecting
> > the configure function pointer is not useful, as the configure functions
> > may live in modules.
> >
> > Add vfunc get_description to weston_surface, which will produce a short,
> > human-readable description of the surface, which allows identifying it
> > better, rather than just looking at the surface size, for instance.
> >
> > Set the description from most parts of Weston, to identify cursors and
> > drag icons, and panels, backgrounds, screensavers and lock surfaces, and
> > the desktop shell's application surfaces.
> >
> > Signed-off-by: Pekka Paalanen 
> > ---
> >  desktop-shell/input-panel.c |   9 
> >  desktop-shell/shell.c   | 101 
> > 
> >  src/compositor.c|  17 
> >  src/compositor.h|   7 +++
> >  src/data-device.c   |  19 +
> >  src/input.c |  10 +
> >  6 files changed, 163 insertions(+)

...

> > diff --git a/src/compositor.c b/src/compositor.c
> > index 17e930c..ea5cc14 100644
> > --- a/src/compositor.c
> > +++ b/src/compositor.c
> > @@ -2736,6 +2736,13 @@ weston_subsurface_parent_commit(struct 
> > weston_subsurface *sub,
> > weston_subsurface_synchronized_commit(sub);
> >  }
> >
> > +static int
> > +subsurface_get_description(struct weston_surface *surface,
> > +  char *buf, size_t len)
> > +{
> > +   return snprintf(buf, len, "sub-surface");
> > +}
> > +
> >  static void
> >  subsurface_configure(struct weston_surface *surface, int32_t dx, int32_t 
> > dy)
> >  {
> > @@ -2819,6 +2826,14 @@ weston_surface_set_role(struct weston_surface 
> > *surface,
> > return -1;
> >  }
> >
> > +WL_EXPORT void
> > +weston_surface_set_description(struct weston_surface *surface,
> 
> I find the naming a bit confusing, I'd expect this to set the
> description of the surface, that is a char*. The get_description vfunc
> on the other hand doesn't return the function passed here, but the
> char*. I'd call it something like
> weston_surface_set_description_func(), or maybe
> weston_surface_set_descriptor().

Yes, weston_surface_set_get_description_func() it would be indeed, but
it was getting a bit long, especially when the argument is usually
a fairly long word too.

Descriptor smells a bit like an fd thing, though.

weston_surface_set_... eh... umm

What if I did s/description/label/g?

So we'd have e.g.:
weston_surface_set_label_func(surface, shell_surface_get_label)
and weston_surface::get_label field.

How's that?


Thanks,
pq


> 
> > +  int (*desc)(struct weston_surface *,
> > +  char *, size_t))
> > +{
> > +   surface->get_description = desc;
> > +}
> > +
___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


Re: [PATCH weston 1/2] compositor: add weston_surface_set_description()

2014-11-27 Thread Giulio Camuffo
Just a quick comment below, I haven't looked at it carefully yet.

--
Giulio

2014-11-27 9:07 GMT+02:00 Pekka Paalanen :
> From: Pekka Paalanen 
>
> When printing out logs from Weston's actions, mainly for debugging, it
> can be very difficult to identify the different surfaces.  Inspecting
> the configure function pointer is not useful, as the configure functions
> may live in modules.
>
> Add vfunc get_description to weston_surface, which will produce a short,
> human-readable description of the surface, which allows identifying it
> better, rather than just looking at the surface size, for instance.
>
> Set the description from most parts of Weston, to identify cursors and
> drag icons, and panels, backgrounds, screensavers and lock surfaces, and
> the desktop shell's application surfaces.
>
> Signed-off-by: Pekka Paalanen 
> ---
>  desktop-shell/input-panel.c |   9 
>  desktop-shell/shell.c   | 101 
> 
>  src/compositor.c|  17 
>  src/compositor.h|   7 +++
>  src/data-device.c   |  19 +
>  src/input.c |  10 +
>  6 files changed, 163 insertions(+)
>
> diff --git a/desktop-shell/input-panel.c b/desktop-shell/input-panel.c
> index 0b42c2f..d699c47 100644
> --- a/desktop-shell/input-panel.c
> +++ b/desktop-shell/input-panel.c
> @@ -150,6 +150,13 @@ update_input_panels(struct wl_listener *listener, void 
> *data)
> memcpy(&shell->text_input.cursor_rectangle, data, 
> sizeof(pixman_box32_t));
>  }
>
> +static int
> +input_panel_get_description(struct weston_surface *surface,
> +   char *buf, size_t len)
> +{
> +   return snprintf(buf, len, "input panel");
> +}
> +
>  static void
>  input_panel_configure(struct weston_surface *surface, int32_t sx, int32_t sy)
>  {
> @@ -187,6 +194,7 @@ destroy_input_panel_surface(struct input_panel_surface 
> *input_panel_surface)
> wl_list_remove(&input_panel_surface->link);
>
> input_panel_surface->surface->configure = NULL;
> +   weston_surface_set_description(input_panel_surface->surface, NULL);
> weston_view_destroy(input_panel_surface->view);
>
> free(input_panel_surface);
> @@ -228,6 +236,7 @@ create_input_panel_surface(struct desktop_shell *shell,
>
> surface->configure = input_panel_configure;
> surface->configure_private = input_panel_surface;
> +   weston_surface_set_description(surface, input_panel_get_description);
>
> input_panel_surface->shell = shell;
>
> diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
> index 9e8d45a..22e1b25 100644
> --- a/desktop-shell/shell.c
> +++ b/desktop-shell/shell.c
> @@ -274,6 +274,32 @@ static void
>  shell_surface_set_parent(struct shell_surface *shsurf,
>   struct weston_surface *parent);
>
> +static int
> +shell_surface_get_description(struct weston_surface *surface,
> + char *buf, size_t len)
> +{
> +   struct shell_surface *shsurf;
> +   const char *typestr[] = {
> +   [SHELL_SURFACE_NONE] = "unidentified",
> +   [SHELL_SURFACE_TOPLEVEL] = "top-level",
> +   [SHELL_SURFACE_POPUP] = "popup",
> +   [SHELL_SURFACE_XWAYLAND] = "Xwayland",
> +   };
> +   const char *t, *c;
> +
> +   shsurf = get_shell_surface(surface);
> +   if (!shsurf)
> +   return snprintf(buf, len, "unidentified window");
> +
> +   t = shsurf->title;
> +   c = shsurf->class;
> +
> +   return snprintf(buf, len, "%s window%s%s%s%s%s",
> +   typestr[shsurf->type],
> +   t ? " '" : "", t ?: "", t ? "'" : "",
> +   c ? " of " : "", c ?: "");
> +}
> +
>  static bool
>  shell_surface_is_top_fullscreen(struct shell_surface *shsurf)
>  {
> @@ -634,6 +660,13 @@ get_default_output(struct weston_compositor *compositor)
> struct weston_output, link);
>  }
>
> +static int
> +focus_surface_get_description(struct weston_surface *surface,
> + char *buf, size_t len)
> +{
> +   return snprintf(buf, len, "focus highlight effect for output %s",
> +   surface->output->name);
> +}
>
>  /* no-op func for checking focus surface */
>  static void
> @@ -683,6 +716,7 @@ create_focus_surface(struct weston_compositor *ec,
> surface->configure = focus_surface_configure;
> surface->output = output;
> surface->configure_private = fsurf;
> +   weston_surface_set_description(surface, 
> focus_surface_get_description);
>
> fsurf->view = weston_view_create(surface);
> if (fsurf->view == NULL) {
> @@ -2741,6 +2775,34 @@ shell_surface_get_shell(struct shell_surface *shsurf)
> return shsurf->shell;
>  }
>
> +static int
> +black_surface_get_description(struct weston_surface *surface,
> + char *buf, size_t len)
> +{
> +   struct westo