23889 Commits

Author SHA1 Message Date
Rico Tzschichholz
09a1365c3a build: Fix doc build and make dist
Reviewed-by: Neil Roberts <neil@linux.intel.com>
2013-07-02 14:19:05 +02:00
Neil Roberts
c063896186 Set the minimum required wayland-server version to 1.1.90
Since the Wayland server support has been updated to use wl_shm_buffer
we need the latest git version of Wayland to build. Previously the
configure.ac file only had one define for the minimum version of both
the client-side and server-side support but as they are now different
this patch splits them out.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 75d62292fc268164f8a085225033abe17e59ba1c)
2013-07-01 14:37:51 +01:00
Neil Roberts
2d5a84fc35 cogland: Use wl_client_add_object instead of wl_client_add_resource
wl_client_add_resource has been deprecated in the Wayland API in
favour of wl_client_add_object which returns a pointer to a
wl_resource which it allocates instead of the compositor having to
embed it in a larger struct. As far as I understand the idea is to
eventually make wl_resource completely opaque. This patch changes
Cogland accordingly.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit adb971954757dffb9ddecf8c9091b96756424800)
2013-07-01 13:48:24 +01:00
Neil Roberts
1ad0e81b7b wayland-server: Update because wl_shm_buffer is no longer a wl_buffer
The Wayland server API has changed so that wl_shm_buffer is no longer
a type of wl_buffer and it instead must be retrieved directly from the
resource.

cogl_wayland_texture_2d_new_from_buffer now takes a resource pointer
instead of directly taking a wl_buffer and it will do different things
depending on whether it can get a wl_shm_buffer out of the resource
instead of trying to query the buffer type.

Cogland has also been updated so that it tracks a resource for buffers
of surfaces instead of directly tracking a wl_buffer. This are pointed
to by a new CoglandBuffer struct which can be referenced by a
CoglandBufferReference. The WL_BUFFER_RELEASE event will be posted
when the last reference to the buffer is removed instead of directly
whenever a new buffer is attached. This is similar to how Weston
works.

https://bugzilla.gnome.org/show_bug.cgi?id=702999

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 9b35e1651ad0e46ed489893b60563e2c25457701)

Conflicts:
	examples/cogland.c
2013-07-01 13:48:22 +01:00
Neil Roberts
baa398b324 wayland: Always call wl_display_flush before going idle
Previously Cogl would only call wl_display_flush after doing a swap
buffers on the onscreen because that is the only place where Cogl
itself would end up queueing requests. However since commit
323fe188748 Cogl takes control of calling wl_display_dispatch as well
which effectively makes it very difficult for the application to
handle the Wayland event queue itself. Therefore it needs to rely on
Cogl to do it which means that other parts of the application may also
queue requests that need to be flushed.

This patch tries to copy the display fd handling of window.c in the
Weston example clients. wl_display_flush will always be called in
prepare function for the fd which means it will always be called
before going idle. If flushing the display causes the socket buffer to
become full, it will additionally poll for write on the FD to try
flushing again when it becomes empty.

We also need to call wl_display_dispatch_pending in the prepare
because apparently calling eglSwapBuffers can cause it to read data
from the FD to receive events for a different queue. In that case
there will be events that need to be handled but the FD will no longer
be ready for reading so we won't wake up the main loop any other way.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 962d1825105a87dd8358a765353b77f6af8fe760)
2013-07-01 13:47:48 +01:00
Neil Roberts
651a2775b5 poll: Add _cogl_poll_renderer_modify_fd
_cogl_poll_rendererer_modify_fd can be used internally to modify the
event mask on an FD to be polled. This will be used in the Wayland
backend to start blocking on write whenever flushing the display fills
the socket's buffer. Modifying the FD's events causes the poll age to
increase.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 8bc0df53ee508687b87e547c1cbac5e8d7d5fc80)
2013-07-01 13:47:48 +01:00
Neil Roberts
41b97b885a poll: Always run the prepare callbacks for all sources
Eventually the Wayland winsys will want to do useful work in its
prepare callback before the main loop goes idle. Previously
cogl_poll_renderer_get_info would stop calling any further prepare
functions if it found one with a zero timeout. That would mean the
Wayland prepare function might not get called before going idle in
some cases. This patch changes it so that it continues to call all of
the prepare functions regardless of the timeout.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 02f7fa538c9d2b383fa0f601177140b571ecf315)
2013-07-01 13:47:48 +01:00
Neil Roberts
813e8f3a98 wayland: Disconnect the display when the renderer disconnects
If we don't do this then it might leak connections to the display if
multiple different renderers are tried.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 8e5b4d40a4d960d0d20927d30ee68a37387fe776)
2013-07-01 13:47:48 +01:00
Neil Roberts
2f4d66f950 Don't create a layer when enabling texture coordinate attributes
When a primitive is drawn with an attribute that contains texture
coordinates Cogl will fetch the corresponding layer in order to
determine the unit number. However if the pipeline didn't actually
have a layer it would end up redundantly creating it. It's probably
not a good idea to be modifying the pipeline while flushing the
attributes state so this patch makes it pass the no-create flag to the
get_layer function and then skips out enabling the attribute if the
layer didn't already exist.

https://bugzilla.gnome.org/show_bug.cgi?id=702570

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 7507ad1a55a2aeb5beb8c0e3343e1e1f2805ddde)
2013-07-01 13:36:56 +01:00
Neil Roberts
e926c1dab4 Fix the alpha value in the default texture data
When a layer is added to a pipeline without setting a texture it ends
up sampling from a default 1x1 texture which is meant to be solid
white. However for some reason we were creating the texture with 0
opacity which is effectively an invalid premultiplied colour. This
would make the blending behave oddly if it was used.

https://bugzilla.gnome.org/show_bug.cgi?id=702570

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 2ffc77565fb6395b986d3274f8bdb6eee6addbf9)
2013-07-01 13:36:56 +01:00
Ray Strode
b76c3312e9 Revert "background: Allow using sliced textures"
This reverts commit f743539886dc2d5a8a81bcc147dbc2070dd214d0.

( accidentally pushed this when trying to push commit
  b7840bec7d135fec3c268b5eab1233d6c6c7cdf6 )
2013-07-01 07:33:19 -04:00
Ray Strode
fd7db8e6b3 Revert "background: downscale background to fit in texture limits"
This reverts commit 15e01152da335f5a9e7617674ffa54cb1bdef957.

( accidentally pushed this when trying to push commit
  b7840bec7d135fec3c268b5eab1233d6c6c7cdf6 )
2013-07-01 07:31:25 -04:00
Ray Strode
b7840bec7d background: Allow using sliced textures for file based backgrounds
Some cards have 2k texture limits, which can be smaller than
commonly sized backgrounds.

One way to get around this problem is to use Cogl's "sliced texture"
feature, that transparently uses several hardware textures under the hood.

This commit changes background textures loaded from file to potentially
use slicing.  Based on a patch by Jasper St. Pierre
<jstpierre@mecheye.net>.

https://bugzilla.gnome.org/show_bug.cgi?id=702283
2013-07-01 07:28:59 -04:00
Jasper St. Pierre
f743539886 background: Allow using sliced textures
https://bugzilla.gnome.org/show_bug.cgi?id=702283
2013-07-01 07:28:32 -04:00
Ray Strode
15e01152da background: downscale background to fit in texture limits
Some cards have 2k texture limits, which can be smaller than
commonly sized backgrounds.

This commit downscales the background in this situation, so that
it won't fail to load.

https://bugzilla.gnome.org/show_bug.cgi?id=702283
2013-07-01 07:28:32 -04:00
Rob Bradford
5c93c0a1af wayland: make the surface toplevel when showing the stage
Cogl (as of 0b2b46ce) now only sets the shell surface as toplevel when
the CoglOnscreen is shown.

Without calling wl_shell_surface_set_toplevel the compositor will not
know what role to give to the compositor and thus the stage will not
appear.

When we look to support multiple roles / foreign surfaces we will need
to revisit this call and ensure we only call it when we are working in
the default case.

https://bugzilla.gnome.org/show_bug.cgi?id=703188
2013-06-28 12:15:40 +01:00
Rob Bradford
5758ab5c89 wayland: Do not poll the Wayland socket for events
Since Cogl also polls on this file descriptor we can get into situations
where our event source is woken up to handle events but those events
have instead been handled by Cogl resulting in the source sitting in
poll().

We can safely rely on Cogl to handle the polling on the event source and
to dispatch those events.

https://bugzilla.gnome.org/show_bug.cgi?id=702202
2013-06-28 11:43:49 +01:00
Rob Bradford
cba63dd93f wayland: Do not poll the Wayland socket for events
Since Cogl also polls on this file descriptor we can get into situations
where our event source is woken up to handle events but those events
have instead been handled by Cogl resulting in the source sitting in
poll().

We can safely rely on Cogl to handle the polling on the event source and
to dispatch those events.

https://bugzilla.gnome.org/show_bug.cgi?id=702202
2013-06-28 11:38:44 +01:00
Rob Bradford
c3be92a30c wayland: Remove now removed CLUTTER_AVAILABLE_ API annotations
In 00bee5f the API annotations were removed as the API is refreshed from
the start. This change removes the annotations from the Wayland API.

https://bugzilla.gnome.org/show_bug.cgi?id=703202
2013-06-28 11:38:44 +01:00
Emmanuele Bassi
1fb0295ba1 build: Enable Cogl support with Wayland
The Wayland backend is based on Cogl, so we need to turn on the
SUPPORT_COGL flag to avoid breaking the build; this always went
unnoticed because we usually build the Wayland client backend
with the X11 backend.

Reported-by: Ross Burton <ross.burton@intel.com>
2013-06-27 16:42:40 +01:00
Neil Roberts
7b80ddcef9 Log a fatal error when an error is propagated to a NULL error argument
Unlike in GError, the policy in Cogl for when NULL is passed as the
CoglError argument is that the program should abort with a fatal
error. Previously however any errors that were being propagated were
being silently dropped if the application passed NULL. This patch
fixes it to also log a fatal error in that case.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 41e233b4b27de579f77b82115cf43a618bf0c93f)
2013-06-27 14:29:51 +01:00
Adel Gadllah
180e7d74f3 clutter-offscreen-effect: Allocate the cogl texture directly
Cogl now lazy loads the textures so we cannot rely on getting NULL
from cogl_texture_new_with_size so we have to allocate it by ourselves.

https://bugzilla.redhat.com/show_bug.cgi?id=975171
2013-06-25 20:29:20 +02:00
Adel Gadllah
2f95de91c4 clutter-offscreen-effect: Allocate the cogl texture directly
Cogl now lazy loads the textures so we cannot rely on getting NULL
from cogl_texture_new_with_size so we have to allocate it by ourselves.

https://bugzilla.redhat.com/show_bug.cgi?id=975171
2013-06-25 20:28:39 +02:00
Colin Walters
8ac9346046 tests/conform/texture-fbo: Log failure better
We might as well print out exactly which assertion failed.
2013-06-24 20:30:40 +01:00
Emmanuele Bassi
de20785b1b conform: Conditionally execute the texture-fbo unit
If we don't have support for offscreen buffers, then there's no point in
testing FBO support in ClutterTexture — a feature that has been long
since deprecated, on a deprecated class.
2013-06-24 19:43:44 +01:00
Colin Walters
18917259fe Revert "Install a11y tests too"
This reverts commit 2b4f47d4443bd4625dfbc02eb38faed926d0758d.

These are presently "examples" (because they're just run
interactively, not automatable tests).

Conflicts:
	tests/accessibility/Makefile.am
2013-06-24 14:32:16 -04:00
Florian Müllner
2103ff6a5c window: Don't force attached dialogs to be border-only
Originally attached dialogs did not have a titlebar, which the code
still assumes though it hasn't been true for a while; nowadays, the
actual look of attached dialogs is controlled by the theme.
As GTK+ recently gained the ability to set custom titlebars, we need
to support attached dialogs with either full borders (WM decorations)
or border-only (GTK+ titlebar).
Just remove the left-over assumption to make it work as expected.

https://bugzilla.gnome.org/show_bug.cgi?id=702764
2013-06-24 20:19:33 +02:00
Colin Walters
571eb318d2 Revert "Install a11y tests too"
This reverts commit 2b4f47d4443bd4625dfbc02eb38faed926d0758d.

These are presently "examples" (because they're just run
interactively, not automatable tests).

Conflicts:
	tests/accessibility/Makefile.am
2013-06-24 14:11:30 -04:00
Colin Walters
5105edca0f build: Use tabs in rule definitions 2013-06-24 13:38:41 -04:00
Matthias Clasen
ada04546f0 Fix build with --enable-installed-tests
Space, the ultimate frontier...and the breaker of Makefiles.
2013-06-24 13:37:41 -04:00
Adel Gadllah
8ab136b7ea window: Make sure override_redirect window have correct monitor info
We need to update window->monitor on override_redirect windows as well, other
wise they may end up with an invalid struct which triggers and assert when
meta_window_is_monitor_sized is called.

https://bugzilla.gnome.org/show_bug.cgi?id=702564
2013-06-24 17:32:22 +02:00
Matthias Clasen
2b4f47d444 Install a11y tests too
https://bugzilla.gnome.org/show_bug.cgi?id=702941
2013-06-24 10:15:07 -04:00
Matthias Clasen
e88e690d56 Install conformance tests
Install the conformance tests, and metadata to run them
with gnome-desktop-testing-runner.

https://bugzilla.gnome.org/show_bug.cgi?id=702941
2013-06-24 10:14:47 -04:00
Matthias Clasen
3084286874 Install a11y tests too
https://bugzilla.gnome.org/show_bug.cgi?id=702941
2013-06-23 23:28:25 -04:00
Matthias Clasen
e98f32b7c8 Install conformance tests
Install the conformance tests, and metadata to run them
with gnome-desktop-testing-runner.

https://bugzilla.gnome.org/show_bug.cgi?id=702941
2013-06-23 23:28:19 -04:00
Adel Gadllah
5205821fb9 window: Reuse current pointer position for monitor checks
Avoid a round trip to the xserver we already have the current position
anyway. Querying from the server on every move can cause the compositor to
stall during movement.
2013-06-23 21:24:41 +02:00
Adel Gadllah
7187206ef5 screen: Allow reusing the current position when quering the monitor
Add new api (meta_screen_get_current_monitor_for_pos and
meta_screen_get_current_monitor_info_for_pos) that allow querying the monitor
without a roundtrip by reusing the passed in cursor position.
2013-06-23 21:24:41 +02:00
Robert Bragg
5faed43f29 cogl-gst: expose aspect ratio apis
This adds several utility apis that aim to make it as easy as possible
for an application to determine what size a video should be drawn at.

The important detail here is that these apis take into account the
pixel-aspect-ratio in addition to the video's own aspect ratio.

This patch updates the cogl-basic-video-player example to use the
cogl_gst_video_sink_fit_size() api to perform letterboxing.

Reviewed-by: Neil Roberts <neil@linux.intel.com>

(cherry picked from commit d26f17c97ff6b9f6d6211e0527d5965a85305a56)
2013-06-21 19:06:59 +01:00
Neil Roberts
ee559d4e93 cogl-gst: Remove the return value from attach_frame()
Previously cogl_gst_video_sink_attach_frame returned the last layer
used by the sink. This can also be retrieved via
cogl_gst_video_sink_get_free_layer so I don't think it's necessary to
return it here and it seems kind of out of place.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 0805f3e9db715fc2c97b7e60d4f3a25e7fa598fc)
2013-06-21 19:05:36 +01:00
Neil Roberts
735bf63063 cogl-gst: Move the PARAM macros into the C file
These are just internal convenience macros to define the GObject
properties so they shouldn't be in the public headers.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit b7b861aa87ad05a2c253afdd87323acd82fd988f)
2013-06-21 19:05:16 +01:00
Neil Roberts
5f86563c86 cogl-gst: Add some documentation
Adds documentation comments to CoglGstVideoSink and makes it generate
a separate manual to contain it.

One thing that I wasn't able to figure out with this was how to get
the documentation to have correct references to the main Cogl docs.
You can pass arguments to gtkdoc-fixxref to point to other manuals,
but presumably this needs the installed locations and when the
Cogl-Gst documentation is generated the Cogl docs may not have been
installed yet.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 5acdf8db47311893a9cf9ea04a66a287b657b8b0)
2013-06-21 19:04:52 +01:00
Neil Roberts
c50b302fc4 cogl-gst: Remove the unused cogl_gst_video_sink_get_main_loop
This declaration was a leftover from a previous iteration of the
CoglGST patches.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 53ae6d39efa113e28f5d1177ccb8613ddf28ee43)
2013-06-21 19:03:24 +01:00
Plamena Manolova
282505ba99 cogl-gst: Add a functions to facilitate layering
These functions are used when attaching frames at a start point other
than layer 0 is required. This could potentially be used to "layer"
videos and textures on top of each other in the CoglPipeline. This
layering could come handy if videos are used as alpha masks or normal
maps, or when arranging layers in a perticular order, so Cogl could
blend them nicely without extra hassle.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit f98b437c9ea79f04ef1ebbb6ff547f58b49b0008)
2013-06-21 19:03:04 +01:00
Neil Roberts
4eb9987699 cogl-gst: Don't replace previous layers in default shader
Previously, when CoglGST generated the default sampling snippet it
would set the replace string so that Cogl wouldn't generate any
redundant code for the other layers. However this also meant that it
wouldn't modulate with the default colour. This patch changes it to
set the combine mode on all of the layers to REPLACE(PREVIOUS) so that
it just copies the previous layer without generating any texture
sampling. That way the fragment snippet for the final layer can just
modulate the previous value with the video sampling function. This
makes it possible to set a color on the pipeline and have it modulate
the video. Also if we eventually add a way to insert layers before the
GST sampling layer then it can modulate with those.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit f5da8d2caf4b2fbaf6941642a5d5ea7b93d0dd0f)
2013-06-21 19:02:35 +01:00
Neil Roberts
e85a681788 cogl-gst: Remove ‘FLOP’
This is an inappropriately pessimistic remark for the header of
CoglGstVideoSink.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit ce2a70165054fea3e9d992c14650ba8cccf60e97)
2013-06-21 19:02:15 +01:00
Neil Roberts
e46ad9a91e cogl-gst: Use alpha textures instead of luminance textures
Luminance textures are not supported on GL3 and as the textures are
accessed via a shader anyway it doesn't seem like it should make much
difference which component the single-component textures are in. Cogl
already has code to fake alpha textures via the texture swizzle
extension on GL3.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit ca1666860a325fa4d2362cdd38297d6281e997d8)
2013-06-21 19:01:56 +01:00
Neil Roberts
52b0e91537 cogl-gst-plugin: Use a real version number and web address
Instead of hardcoding the version number “0.0” it now uses the version
number from the Cogl source. The web address has been changed to
cogl3d.org.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 5363e4a68da9811fb136a01b278846ce15913287)
2013-06-21 19:01:35 +01:00
Neil Roberts
7acdf0114e cogl-gst: More pedantic style fixes
• Fixes some overly long lines, hugging asterisks in the pointer type
  declarations and indentation issues.

• Tidies up the GLSL source so that it will look nicer in the
  debug output.

• Removes the backwards ‘parent_class’ define which hacks the
  implementation of the G_DEFINE_TYPE macro and just uses the full
  type name instead.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 3ffe8979da4d4dc7deb221e5653b6f24f41b412c)
2013-06-21 19:00:15 +01:00
Chris Cummins
30001939ad cogl-gst: pedantic typo fix in pkg-config description
Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit f723ad34cbdd99385ee5fbfc71423ab3c9bfdae2)
2013-06-21 18:59:49 +01:00
Robert Bragg
adcaf27106 cogl-gst: pedantic style fixes in cogl-gst-video-sink.h
There were a few hugging pointer asterisks and inconsistent newlines for
a prototype which this patch tweaks.

Reviewed-by: Neil Roberts <neil@linux.intel.com>

(cherry picked from commit 488c074316b270b17d1000c68f26210108b1b0ca)
2013-06-21 18:59:14 +01:00