Commit Graph

639 Commits

Author SHA1 Message Date
Kristian Høgsberg
42c8f60506 window: Handle data_device.selection events with offer=NULL
This happens when the current selection data_offer is removed.
2012-01-27 11:08:40 -05:00
Kristian Høgsberg
ae6e2717c5 window: Don't crash when window with focus_widget is destroyed
We would try to deliver a leave event to a widget in a destroyed window.
2012-01-26 11:09:20 -05:00
Neil Roberts
6b28aadd47 window: Fix sending button events when there's no grab
The code which sends the button events was checking whether there is a
focus widget with a button handler but then always sending the button
event to the grab widget. If the grab widget is different from the
focus widget at this point then it will check the wrong widget for a
button handler and potentially crash. It is also possible for there to
be no grab widget here in the following situation:

1. Press and hold down the left mouse button
2. Press and hold down the right mouse button
3. Release the left mouse button
4. Release the right mouse button

In this case the grab will be released at step 3 because the code only
keeps track of the grab for one button. Then it will try to send the
release event for the right mouse button to a NULL widget so it will
crash.
2012-01-24 11:25:15 -05:00
Kristian Høgsberg
824c6d0e38 window: Use CAIRO_OPERATOR_OVER for rendering the menu
We forgot to switch back from CAIRO_OPERATOR_SOURCE, which is broken,
but also hits a broken fallback in cairo-gl.
2012-01-19 13:54:11 -05:00
Pekka Paalanen
6d174cff7a window: menu leak fixes
When a menu self-destructs, free also the widget and struct menu.

As menus are self-destructing, it does not make sense to store the
window pointer, since we cannot clear it automatically. Therefore,
rename window_create_menu() to window_show_menu() that does not return
the window pointer. It also calls window_schedule_redraw() internally.

Fixes Valgrind reported memory leaks.

The alternative would be to explicitly destroy the menu in application's
menu callback.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-19 16:42:05 +02:00
Pekka Paalanen
e156fb681e window: remove pointers to widget on destroy
Input devices may hold a pointer to the widget being destroyed. Reset
such pointers in widget_destroy().

This fixes a use-after-free in window_destroy(), if an application
destroys its widgets before the window.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-19 16:41:55 +02:00
Pekka Paalanen
4dde2fc6f6 window: destroy frame in window_destroy()
Fix a memory leak reported by Valgrind, by destroying the window
decorations widget, if it exists.

All widget pointers returned from toytoolkit to the application should
be destroyed by the application explicitly.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-19 16:41:48 +02:00
Kristian Høgsberg
2d57439592 clients: Allow compiling with the cairo glesv2 backend
This disables gears and wscreensaver, which use full GL.
2012-01-18 14:50:58 -05:00
Kristian Høgsberg
8e81df4503 Use new format codes 2012-01-11 14:24:46 -05:00
Kristian Høgsberg
62444800e1 window: Don't deref focus widget if there isn't one 2012-01-11 11:18:14 -05:00
Kristian Høgsberg
f0993f61c0 window: Remove a few unused struct fields 2012-01-11 00:09:42 -05:00
Kristian Høgsberg
b63235142d window: Move focus widget to struct input 2012-01-11 00:04:42 -05:00
Kristian Høgsberg
831dd52aa0 window: Implement input device grabbing
With all input events going to widgets now, we can grab an input device
to a widget, so that all events are delivered to that widgets handlers.
This lets us implement the last bit of the menu behaviour, that is
the client side grabbing of events.  The result is that we can now pop down
the menu when we receive clicks in the clients own windows and we
don't send motion and button events to other widgets.
2012-01-10 23:46:33 -05:00
Kristian Høgsberg
29af3ebce6 window: Make decorations just a widget
Woohoo, only took 25 commits of refactoring to get to this point.
2012-01-10 22:41:55 -05:00
Kristian Høgsberg
bb97700474 window: Get rid of the window child allocation concept 2012-01-10 19:11:42 -05:00
Kristian Høgsberg
27ff086b8e window: Break widget grab before shell surface move or grab 2012-01-10 14:28:58 -05:00
Kristian Høgsberg
441338cb75 window: Keep widgets in a tree instead of a list 2012-01-10 14:22:14 -05:00
Kristian Høgsberg
30948989ee window: Use surface coordinates for looking up widgets 2012-01-10 14:22:14 -05:00
Kristian Høgsberg
b67e94b170 window: Make resize and redraw handlers widget vfuncs 2012-01-10 14:22:10 -05:00
Kristian Høgsberg
5d12990dbe window: Allocate and flush the window surface in window.c
No need to push this to the toolkit users.
2012-01-10 12:25:32 -05:00
Kristian Høgsberg
75bc667a70 window: Drop the window widget
It was just a temporary convenience for moving things over.
2012-01-10 10:45:52 -05:00
Kristian Høgsberg
9ca2d08fb0 window: Run deferred tasks before blocking for initial iteration
The first iteration of the while loop wouldn't run the deferred tasks
before blocking in epoll_wait().  Move things around so we do.
2012-01-09 18:48:14 -05:00
Kristian Høgsberg
bb901fac90 window: Return pointer type from widget enter handler 2012-01-09 11:22:32 -05:00
Kristian Høgsberg
a8a0db3497 window: Move button handler to widget 2012-01-09 11:12:05 -05:00
Kristian Høgsberg
19dd1d7eb1 window: Use the window widget instead of adding a window sized widget 2012-01-09 10:42:41 -05:00
Kristian Høgsberg
87a57bbd73 window: Create a widget for the window, drop window motion handler 2012-01-09 10:34:35 -05:00
Kristian Høgsberg
5f190ef96a window: Convert a few clients to use widget motion handler 2012-01-09 09:44:45 -05:00
Kristian Høgsberg
04e98344cf window: Add a widget motion handler 2012-01-09 09:36:16 -05:00
Kristian Høgsberg
ab9e79ffc2 window: Remove window enter/leave handlers 2012-01-09 09:32:07 -05:00
Kristian Høgsberg
391649b0dc window: Use widget enter/leave handlers for menu 2012-01-09 09:22:30 -05:00
Kristian Høgsberg
ee143236d7 window: Replace widget focus handler with a enter/leave handler pair 2012-01-09 08:42:24 -05:00
Kristian Høgsberg
21eabf60b0 window: Use display_exit() instead of exit() in window menu 2012-01-08 15:41:52 -05:00
Kristian Høgsberg
9a13dab8a9 window: Move widget focus handler to the widget 2012-01-08 15:18:19 -05:00
Kristian Høgsberg
c51f79954b window: Rename item to widget
It's a widget.
2012-01-08 15:09:53 -05:00
Kristian Høgsberg
4f7dcd6eb1 window: Add a window menu
At least this gives us a way to close the toy toolkit clients.
2012-01-06 22:03:44 -05:00
Kristian Høgsberg
b3cca0a411 shell: Start implementing the popup surface type
This lands the basic behavior of the popup surface type, but there are still
a number of details to be worked out.  Mainly there's a hardcoded timeout
to handle the case of releasing the popup button outside any of the
client windows, which triggers popup_end if it happens after the timeout.
Maybe we just need to add that as an argument, or we could add a new event
that fires in this case to let the client decide whether it ends the popup
or not.
2012-01-06 11:41:55 -05:00
Kristian Høgsberg
9724b51750 More weston rename fixes 2012-01-03 14:35:49 -05:00
Kristian Høgsberg
e7aaec301a x11: Bridge X11 CLIPBOARD selection to Wayland clients 2011-12-27 13:50:04 -05:00
Kristian Høgsberg
e04ad57a01 window.c: Add touch event stubs
Prevent window.c clients from crashing on touch events.
2011-12-22 11:32:38 -05:00
Kristian Høgsberg
8a1d10d66c window.c: Rename input handlers to input_handle_*
They're event handlers for the input object, not the window object.
2011-12-22 11:32:34 -05:00
Pekka Paalanen
325bb60792 window: destroy surfaces on display_destroy()
Destroy the window decoration surfaces and pointer surfaces.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-12-22 11:27:51 +02:00
Pekka Paalanen
e1207c708e window: destroy all inputs on display_destroy()
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-12-22 11:27:51 +02:00
Pekka Paalanen
c20529846e window: destroy misc objects on display_destroy()
Windows are supposed to be destroyed by the application explicitly.

Deferred tasks are not supposed to be added after returning from
display_run().

Destroy remaining wl objects (except input related will be in a
following patch).

Close the epoll fd.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-12-22 11:27:51 +02:00
Pekka Paalanen
2c1426a72f window: destroy outputs on display_destroy()
This will also start calling the output destroy handlers, if an
application has set any.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-12-22 11:27:51 +02:00
Pekka Paalanen
5ec6585753 window: destroy window surfaces and title
Plugs leaks from struct window in window_destroy().

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-12-22 11:27:51 +02:00
Pekka Paalanen
51ce95a6eb window: remove unused struct members
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-12-22 11:27:50 +02:00
Pekka Paalanen
fe6079ac09 window: add display_destroy()
Add a function to destroy the 'struct display', supposedly with all
contained resources, that are not explicitly created by the application.

The implementation at this time is incomplete. It does clean up the
following:
- xkb structure is freed (needs new libxkbcommon from git)
- EGL resources are freed
- wl_display is flushed and destroyed

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-12-22 11:27:50 +02:00
Pekka Paalanen
826d795448 window: add display_exit()
Add a function, that schedules the display_run() event loop to break
out.

When display_exit() is called, processing continues as usual, until
currently waiting events and deferred tasks have been processed, and
sent requests are flushed. Then, display_run() will return.

This enables toytoolkit apps to handle their exit instead of just being
killed or call exit().

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-12-22 11:27:50 +02:00
Kristian Høgsberg
bbedd7e9d2 clients: Implement a toy-menu for testing the menu surface type 2011-12-19 15:40:10 -05:00
Pekka Paalanen
9015ead7d6 window: do proper Cairo device flushing
The Cairo documentation tells us to always call cairo_device_flush()
before using other rendering APIs on the cairo surface, especially where
the Cairo device shares state with us (that is, EGL and GL state in this
case).

Add a call to cairo_device_flush() into display_acquire_window_surface(),
which the toytoolkit offers for switching to native (GL) rendering.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-12-19 10:50:38 -05:00
Kristian Høgsberg
cd9ac1da5f compositor: Remove server side cursors
We always expect the clients to set the cursor and attaching a NULL buffer
hides the cursor.  The cursor starts out hidden.
2011-12-15 09:15:08 -05:00
Pekka Paalanen
999c5b5dcb window: expose outputs to applications
Add output_configure_handler as a display property. This exposes only
configured outputs, that is the current mode info is already received,
to applications.

The handler is also called for mode changes on an existing output. This
simplifies the implementation in toytoolkit as we can defer the handler
calls from wl_output binding time to when we receive the current mode.
We do not need separate handlers for "new output" and "mode changed". A
plain "new output" handler would be problematic as the current mode is
not known yet.

Also add delete_handler hook for outputs, but that will never be called
for now, as the protocol lacks a way to signal output disconnections.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-12-14 11:17:46 +02:00
Pekka Paalanen
6b2dc9119e window: do not crash without wl_shell
Since it is the desktop-shell plugin in the compositor that offers both
wl_shell global interface and wl_shell_surface interface, those are not
available on the tablet-shell plugin.

The tablet-shell client uses the toytoolkit, so toytoolkit must work
somehow even without wl_shell.

Turn all operations in toytoolkit that would require wl_shell or
wl_shell_surface into no-ops.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-12-04 14:55:40 -05:00
Pekka Paalanen
068ae944db desktop-shell: update protocol and client to wl_shell_surface
Change desktop-shell protocol to use wl_shell_surface instead of
wl_surface.

Adapt the desktop-shell client and the shell plugin.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-12-04 14:54:34 -05:00
Pekka Paalanen
9d1613eb4a wl_shell_surface adaptation
Protocol changes in Wayland core introduced a new interface
wl_shell_surface, and moved all wl_shell surface methods into it. Adapt
the compositor and its Wayland backend, shell plugin, and all clients to
the new interface.

Depends on the Wayland core commit "protocol: introduce wl_shell_surface"

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-12-04 14:54:26 -05:00
Pekka Paalanen
a03a93c6ea window: fix segfault in window_handle_key()
When a window destroyed, if any input had the window in keyboard
focus, the keyboard focus is reset to NULL. A new keyboard focus is set
only, if the user clicks something. If the user presses a key instead of
clicking, the key press event is sent to the client which has NULL
keyboard focus, triggering a segfault in window_handle_key().

Fix the segfault by ignoring the key event, if there is no target
window.

I triggered this segfault by clicking the unlock dialog away, and then
pressing a key.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-12-02 06:31:08 -05:00
Kristian Høgsberg
53ff2f6672 window.c: Cache outputs 2011-11-26 17:27:37 -05:00
Kristian Høgsberg
47fe08aad5 Implement the new dnd/selection protocol
The new protocol splits dnd/selection from wl_shell and allows us to move
the implementation out of shell.c.
2011-11-23 16:20:28 -05:00
Kristian Høgsberg
c5241f5b73 Never include wayland-util.h directly
And fix a missing "" to <> conversion for wayland-client.h include.
2011-11-22 09:35:14 -05:00
Pekka Paalanen
50719bce2a Fix inconsistent #include style
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-11-22 09:27:03 -05:00
Kristian Høgsberg
980c49e6cd window: Remove unused variable 2011-11-18 15:24:23 -05:00
Pekka Paalanen
77cbc951cb window: clean up redraw and focuses on destroy
Currently, the way to destroy a window in a response to an event (e.g.
button click), is to put a task into the deferred list with
display_defer(). The task will then call window_destroy() from outside
event handling code.

As events are handled, it is possible that the deferred list contains
also the redraw task for this window. As the execution order of these
tasks is unknown (redrawing a freed window is a bug) and redrawing
something that goes away immediately is not useful, the redraw task must
be removed on window_destroy().

'struct input' contains pointers to windows currently in focus for that
input device. These pointers must also be cleared on window_destroy().
This fixes a use-after-free bug for the unlock dialog in desktop-shell
(future commit).

As an irrelevant minor cleanup, window::grab_device member is not used
anywhere, and is removed.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-11-15 16:43:24 -05:00
Rob Bradford
8bd35c7770 window: Avoid setting an invalid surface for the pointer
If we failed to load the pointer image to the surface then do not create a
buffer from a NULL surface and do not attach that to the device.
2011-10-25 12:20:51 +01:00
Rob Bradford
21223bf6d1 window: Report an error if we cannot load the pointer files 2011-10-25 12:19:36 +01:00
Kristian Høgsberg
bcee9a4b25 desktop-shell: Add beginning of pop-up menu to panel 2011-10-12 00:36:16 -04:00
Benjamin Franzke
1a89f28c7d gears: Fail if compiled without cairo-egl 2011-10-07 10:06:01 +02:00
Benjamin Franzke
0c99163d9b window: Create a cairo device for each egl config 2011-10-07 10:06:01 +02:00
Benjamin Franzke
47eb8f4e91 window: Remove display_flush_cairo_device
Rather add a flush_surface utility that
flushed the cairo_device thats associated to a surface.
2011-10-07 10:05:57 +02:00
Kristian Høgsberg
e4fb78de8f Handle compositors without wl_shell 2011-09-21 17:43:32 -04:00
Kristian Høgsberg
e28d05b0ad window.c: Move window items to window.c 2011-09-20 21:43:54 -04:00
Kristian Høgsberg
3a69627f43 window: Stop using glib mainloop in toy toolkit 2011-09-19 17:28:55 -04:00
Kristian Høgsberg
1e164b9afd Move rounded_rect() to cairo-util.c 2011-09-19 17:26:44 -04:00
Kristian Høgsberg
547da5afc9 terminal: Make -f (fullscreen) option work again 2011-09-19 17:26:30 -04:00
Kristian Høgsberg
f8ab46e149 window: Default to toplevel windows 2011-09-08 16:56:38 -04:00
Kristian Høgsberg
0c29eb292e clients: Add a simple desktop-shell app
This just provides the background surface and the top panel.
2011-09-06 18:02:34 -04:00
Kristian Høgsberg
900b226ac1 window: Add enter/leave handlers 2011-09-06 14:33:52 -04:00
Benjamin Franzke
4b87a13974 clients: Fix typos
And forgotten display_create conversion in view.c.
2011-09-01 10:36:53 +02:00
Benjamin Franzke
91eacca38b Remove egl display type setenv hack
No longer needed with mesa 7.12-devel egl display autodetection.
2011-08-31 16:25:18 -04:00
Kristian Høgsberg
f389cacc20 Move away from visuals and just use EGLConfigs or shm format tokens 2011-08-31 16:21:38 -04:00
Kristian Høgsberg
9de79a92a6 window.c: Drop global handler argument
We can just register a global handler directly on the wl_display now.
2011-08-29 17:12:36 -04:00
Kristian Høgsberg
a8d1fa762e clients: Bring clients up to date 2011-08-29 17:12:36 -04:00
Kristian Høgsberg
334182062f Use the new wl_callback interface 2011-08-29 17:12:36 -04:00
Benjamin Franzke
22d5481f91 window.c: Fix compile/run using cairo without egl 2011-07-15 17:56:04 +00:00
Benjamin Franzke
14f7ff91ad window: Set egl_window_resize late and once
Previously we resized in attach_surface and create_surface.
THe second resize overwrote dx or dy from the first.
2011-06-23 12:10:51 +02:00
Kristian Høgsberg
8f0ce05f52 compositor: Send out more detailed output events 2011-06-21 11:16:58 -04:00
Kristian Høgsberg
7a5c979f4c Move map requests to shell 2011-06-20 10:45:24 -04:00
Benjamin Franzke
65e5051bc7 clients: Add an optional roundtrip for visual lookup 2011-05-31 15:05:32 +02:00
Kristian Høgsberg
3be87d1931 window: Add support for opaque windows 2011-05-16 14:46:41 -04:00
Kristian Høgsberg
8357cd61d8 window.c: Deal with visual changes 2011-05-16 10:43:32 -04:00
Egbert Eich
e7b8d9055e compositor: Set EGL_PLATFORM env variable for each backend.
I may have missed something, but - since the Wayland compositor
already picks a platform backend, opens a connection and initializes the
backend specific display data structure it doesn't make sense
to let egl pick a platform. If it picks a different one the
display specific data structure will most likely not match.
Thus determine the platform in the Wayland rendering backend by setting
the EGL_PLATFORM env variable.
For the client any other platform than 'wayland' doesn't seem to make
sense.
I'm not sure if I've got the the platform ofr openfwd right.

Signed-off-by: Egbert Eich <eich@freedesktop.org>
2011-05-10 16:42:08 -04:00
Benjamin Franzke
bde55ec8e4 Implement buffer.damage in shm, use it in window.c 2011-04-22 11:53:45 -04:00
Kristian Høgsberg
7cbdb64ab6 Fix clients to work with wl_ prefixed interface names 2011-04-20 18:53:37 -04:00
Kristian Høgsberg
91342c6081 Switch to new subscribe protocol and wayland-egl 2011-04-20 14:20:02 -04:00
Kristian Høgsberg
d11eadb519 window.c: Check for cairo device failure the right way 2011-04-14 11:54:59 -04:00
Kristian Høgsberg
01aed1c665 Remove double definition of window_get_wl_surface() 2011-04-11 16:59:05 -04:00
Kristian Høgsberg
11e2828bdc Merge remote-tracking branch 'bnf/surface-frame-event'
Conflicts:
	compositor/compositor.c
2011-04-11 16:47:50 -04:00
Kristian Høgsberg
12b0bb343b Fix window_set_child_size() for windows without decoration 2011-04-11 13:18:31 -04:00
Kristian Høgsberg
386857ba6a Add struct window accessor for the wl_surface 2011-04-11 13:17:44 -04:00
Tim Wiederhake
b4b67344f0 Define global handler on display creation
Otherwise the initial announcement of interfaces gets lost.
2011-04-11 13:16:33 -04:00
Benjamin Franzke
cff904e69d gears: Use wayland egl surface instead of images 2011-03-17 15:55:25 +01:00
Benjamin Franzke
6693ac2108 window: Use window surfaces for windows 2011-03-17 15:55:18 +01:00
Benjamin Franzke
ec4d342aa9 Support per surface frame events
This fixes tearing with multi head.
2011-03-17 11:54:35 +01:00
Tim Wiederhake
9c7a8cc663 fix typo in window.c 2011-02-11 13:44:31 -05:00
Kristian Høgsberg
0d5007a76f window.c: Use eglGetProcAddress to look up extension functions 2011-02-09 10:57:44 -05:00
Kristian Høgsberg
297d6dd442 window.c: Include wayland-egl.h before EGL headers so we get the right platform 2011-02-09 10:51:15 -05:00
Kristian Høgsberg
bfb8e61381 Follow wayland-egl renames 2011-02-07 10:30:38 -05:00
Kristian Høgsberg
297c6313eb Port window.c to use wayland-egl 2011-02-07 09:12:56 -05:00
nobled
7b87cb04a9 window: add null checks
Also check for invalid parameters early on, so if we crash,
we know *why* we crashed.
2011-02-01 18:51:47 +00:00
nobled
14d222f612 add newlines in error messages 2011-02-01 18:48:46 +00:00
Kristian Høgsberg
0ce245761c Add initial basic support for fullscreen surfaces 2011-01-28 15:18:33 -05:00
Kristian Høgsberg
3ba4858c4b compositor-x11: Handle keyboard focus correctly so we avoid stuck modifiers 2011-01-27 11:57:19 -05:00
Kristian Høgsberg
00439617f3 Fix new gcc 4.6 warnings
simple-client.c:156:10: warning: variable ‘ar’ set but not used [-Wunused-but-set-variable]

etc.
2011-01-25 15:16:01 -05:00
Darxus@chaosreigns.com
c4df99cb2c Replace gdk_pixbuf_unref with g_object_unref
Because gdk_pixbuf_unref is deprecated and for compatability with
gdk-pixbuf 2.21.4.
2011-01-25 15:05:08 -05:00
Kristian Høgsberg
d5fb9cc769 window.c: Make title not const
We now strdup it.
2011-01-25 12:45:37 -05:00
Kristian Høgsberg
6ec41abf72 Merge remote branch 'callum/master'
Conflicts:
	clients/window.h
2011-01-25 10:40:01 -05:00
Tim Wiederhake
81bd979835 initialise display
fixes valgrind:
==25178== Conditional jump or move depends on uninitialised value(s)
==25178==    at 0x409E2C: display_create (window.c:1582)
==25178==    by 0x407A43: main (terminal.c:2323)
and
==13793== Conditional jump or move depends on uninitialised value(s)
==13793==    at 0x40A2D1: display_handle_global (window.c:1504)
==13793==    by 0x4E2C183: display_handle_global (wayland-client.c:281)
==13793==    by 0x713FEE7: ffi_call_unix64 (in /usr/lib/libffi.so.5.0.10)
==13793==    by 0x713FC83: ffi_call (in /usr/lib/libffi.so.5.0.10)
==13793==    by 0x4E2C71A: wl_closure_invoke (connection.c:663)
==13793==    by 0x4E2BB7B: wl_display_iterate (wayland-client.c:484)
==13793==    by 0x4096CA: display_create (window.c:1664)
==13793==    by 0x407A43: main (terminal.c:2321)
2011-01-23 17:58:30 -05:00
Tim Wiederhake
748f672b2c free option context 2011-01-23 17:58:22 -05:00
Tim Wiederhake
b6761dc294 fix resizing at top/left border 2011-01-23 13:59:30 -05:00
Tim Wiederhake
8a6f7e3139 compositor crashes if window width or height is <= 0 2011-01-23 13:58:18 -05:00
Kristian Høgsberg
a495333d4f Remove unused bits of cairo code 2011-01-21 22:17:03 -05:00
Kristian Høgsberg
248c1b61ce Add an orange pop-up menu to test the new map_transient request 2011-01-21 18:03:15 -05:00
Callum Lowcay
6eeeb30021 Merge branch 'master' of git://anongit.freedesktop.org/wayland
Conflicts:
	clients/window.h
2011-01-22 12:00:48 +13:00
Kristian Høgsberg
6bccebee23 terminal: Just send the pty master fd to receive the selection.
LOL!!1
2011-01-21 16:26:28 -05:00
Kristian Høgsberg
e164e4ef72 Use cairo_push_group() for all double buffering, drop window_copy_*() 2011-01-21 11:35:05 -05:00
Kristian Høgsberg
5982658d62 Render selection 2011-01-20 11:56:57 -05:00
Kristian Høgsberg
23c03ad981 Use libxkbcommon #defines for modifiers 2011-01-19 14:41:20 -05:00
Kristian Høgsberg
58eec36f68 Add proof-of-concept selection support to terminal
Next will be to support mouse selections so we can copy and paste
something more interesting than just 'selection data'.
2011-01-19 14:27:42 -05:00
Kristian Høgsberg
67cac8a565 Pass input device and time in key_handler callback
Move the modifiers to a input device getter function.
2011-01-19 14:25:13 -05:00
Kristian Høgsberg
943741cb40 Use the global handler in dnd instead of custom drag_offer hook 2011-01-19 14:25:12 -05:00
Kristian Høgsberg
b46df05fa8 window: Add a catch-all global handler hook 2011-01-19 14:25:12 -05:00
Kristian Høgsberg
8def264241 Check for cairo-egl instead of just cairo-gl 2011-01-14 17:42:50 -05:00
Callum Lowcay
ef57a9b788 terminal: Window operations
Implement OSC 1 (set window title), and some basic CSI t window
operations.

Signed-off-by: Callum Lowcay <callum@callumscode.com>
2011-01-14 20:51:58 +13:00
Kristian Høgsberg
da846ca91d Fix terminal resizing
Get snapping to character grid working again, avoid crashes when attempting
to resize below 1x1 character cell, only redraw when size actually changes.

Also, rename window_get_child_rectangle() to window_get_child_allocation().
2011-01-11 10:00:52 -05:00
nobled
f8475c9366 Fix window.c build without cairo-gl 2011-01-05 17:41:55 +00:00
Kristian Høgsberg
82da52b15b Update surface.attach and change surface.map to surface.map_toplevel
The new map_toplevel() request no longer specifies a position and takes
the size from the attached buffer.  The attach request now takes a
position relative to the top-left corner of the old buffer to let
clients specify the relative position of the new buffer.
2010-12-17 09:53:12 -05:00
Yuval Fledel
45568f6e33 When no DRM present, clients (window.c actually) now either exit orderly,
or if that check is removed - crash (unsurprisingly).
This patch relieves this assumption, and allow some clients (terminal,
image, flower) to run in a non-DRM environment
2010-12-06 09:20:34 -05:00
Kristian Høgsberg
f8fc08f771 Add origin information to output.geometry event 2010-12-01 20:10:10 -05:00
Kristian Høgsberg
2bb3ebe1e4 Create socket in /var/run/user/${HOME}
Use the runtime dir from XDG Base Directory Specification for creating the
socket in a directory only the user can read and write.
2010-12-01 16:53:01 -05:00
Kristian Høgsberg
06bc26401c Fix warnings from adding -Wall back 2010-12-01 09:50:16 -05:00
Kristian Høgsberg
41da90897c Don't hardcode offered dnd types in window.c 2010-11-30 14:01:07 -05:00
Joel Teichroeb
88b272d9ff Made the window save the coordinates when being draged. 2010-11-30 13:26:31 -05:00
Benjamin Franzke
35fd2a8cc6 wayland_client: rename wl_display_create to wl_display_connect
Avoid conflict when using wayland-{server,client} together.
2010-11-29 17:14:38 -05:00
Kristian Høgsberg
1f5d507596 Define MULT outside the HAVE_CAIRO_GL #ifdef 2010-11-29 08:13:35 -05:00
Darxus
55973f2f5a Some additional return value checking 2010-11-22 21:54:15 -05:00
Kristian Høgsberg
8857a96a97 window: Don't call drag_offer_handler if it's NULL
Reported by canbaby@21cn.com.
2010-11-22 13:02:24 -05:00
Bryce Harrington
156d057e56 Function declares a pointer return, so return one.
These two functions are just wrappers around display_create_*_surface
but weren't forwarding along the result of those calls as is implied by
their return value type.

This fixes a compile-time warning.

Signed-off-by: Bryce Harrington <bryce@canonical.com>
2010-11-22 10:49:07 -05:00
Bryce Harrington
515f63ad72 Quell warning about potentially uninitialized variable 'surface'
In theory, it was possible for an undefined 'surface' to be passed to
window_set_surface().  Instead, explicitly pass NULL.

Signed-off-by: Bryce Harrington <bryce@canonical.com>
2010-11-22 10:48:52 -05:00
Bryce Harrington
40269a6ed6 Cleanup declared but unused variables.
Make was complaining about a bunch of unused variables that were being
declared.

Signed-off-by: Bryce Harrington <bryce@canonical.com>
2010-11-22 10:48:17 -05:00
Kristian Høgsberg
2b43bd73a0 Bring gears example up to date
Must have gears.
2010-11-08 15:46:02 -05:00
Chia-I Wu
4d8ba216c5 Make sure there is a current context.
The context of a display is shared with the cairo device.
cairo_acquire_device should be called whenever OpenGL calls are made.
2010-10-29 12:49:57 -04:00
Chia-I Wu
1f411902de Use glTexSubImage to update the pixels.
glTexImage causes respecification.  The DRM buffer a client renders to
will be different from that used to create the wl_buffer.
2010-10-29 12:34:47 -04:00
Kristian Høgsberg
012a007771 Add small client for testing shm surfaces 2010-10-26 10:37:55 -04:00
Kristian Høgsberg
d0c3b9da22 Fall back to cairo image backend and shm surface if we don't have cairo gl 2010-10-25 11:40:03 -04:00
Kristian Høgsberg
ce457ba68c Add timestamp to pointer image attach request
This lets the server discard requests received after the pointer has
exited and the re-entered a surface.
2010-09-14 15:39:45 -04:00
Kristian Høgsberg
ab2f1cddc6 Dont post damage event from window_copy_surface
We always call this between window_draw() and attaching the window surface
so the surface we're copying to isn't visible.
2010-09-07 22:01:32 -04:00
Kristian Høgsberg
7d804068b6 Only set pointer image when it changes 2010-09-07 21:50:06 -04:00
Kristian Høgsberg
9d69f8e796 Replace commit/ack/frame protocol with simpler sync and frame callbacks 2010-09-03 14:46:38 -04:00
Kristian Høgsberg
e9d37bdc5f Use a transient object for the dnd session 2010-09-02 20:22:42 -04:00
Kristian Høgsberg
c7c60646ad Add options to specify xkb details 2010-08-29 21:33:39 -04:00
Kristian Høgsberg
30620609b2 Remove debug message 2010-08-29 21:12:25 -04:00
Kristian Høgsberg
e968f9c6b9 Provide visual feedback as to whether drop is supported
Change the cursor in response to target events.
2010-08-27 22:18:00 -04:00
Kristian Høgsberg
4eb536091a Update drag protocol to use fd passing for data transfer 2010-08-27 20:30:26 -04:00
Kristian Høgsberg
1d7ffd32f8 Set pointer image only in response to 'target' event 2010-08-25 16:34:05 -04:00
Kristian Høgsberg
b12fcceeb7 Update to EGL_MESA_drm_image from mesa master
Woo, running on stock mesa now.
2010-08-25 10:02:20 -04:00
Kristian Høgsberg
506e20eed9 More work on dnd 2010-08-19 17:26:02 -04:00
Kristian Høgsberg
9a686243b6 Add a drag and drop test client 2010-08-18 15:28:04 -04:00
Kristian Høgsberg
10ddbd220a Insert unexplainable cairo_device_flush() to fix terminal drawing 2010-08-16 21:08:52 -04:00
Kristian Høgsberg
da275dd09f Add client side pointer image handling 2010-08-16 17:47:07 -04:00
Kristian Høgsberg
b91cd10fcb Move cairo-util.[ch] to clients/ 2010-08-16 16:23:12 -04:00
Kristian Høgsberg
4fe1a3ed3a Don't track globals in the client lib, just send out events
Users of the client library must install an global handler to get access
to globals.
2010-08-10 14:13:23 -04:00
Kristian Høgsberg
640609acfc Implement current drm auth scheme in the drm object 2010-08-09 22:11:47 -04:00
Kristian Høgsberg
5fcd0aa58e Introduce 'buffer' object for attaching, image cahce and cursor images
The buffer object is created by a 'drm' object, which encapsulates the
buffer sharing and authentication mechanism.  Once the buffer is created
it can be attached to a surface.
2010-08-09 14:43:33 -04:00
Kristian Høgsberg
6d70202f80 Send out coordinates with pointer_focus event
We can't rely on motion events happening right away, pointer_focus could
change because of windows coming or going etc.
2010-08-06 15:12:26 -04:00
Kristian Høgsberg
83fc061c9c Introduce 'shell' object for moving and resizing surfaces in the compositor 2010-08-04 22:44:55 -04:00
Kristian Høgsberg
379b678c57 Use EGL_KHR_surfaceless_opengl 2010-07-28 23:51:00 -04:00
Kristian Høgsberg
808fd41861 Drop coordinates from buttons press, add timestamp to events 2010-07-20 17:06:19 -04:00
Kristian Høgsberg
f252d6a98e Update to use eglGetDRMDisplayMESA() 2010-07-08 20:15:10 -04:00
Kristian Høgsberg
3e6e7e6acb Track libxkbcommon API changes 2010-07-02 15:12:02 -04:00
Kristian Høgsberg
2d6b7c118b Fix some warnings 2010-06-25 16:51:57 -04:00
Kristian Høgsberg
94adf6cb9e Use libxkbcommon for mapping keycodes to keysyms 2010-06-25 16:50:05 -04:00
Kristian Høgsberg
c8c3734ef9 Set window user data using separate function 2010-06-25 11:19:22 -04:00
Kristian Høgsberg
dcb71b62a0 Update decoration drawing to be less cairo path happy 2010-06-15 17:16:35 -04:00
Kristian Høgsberg
80d746f6e3 Consolidate redraw scheduling in window.c 2010-06-14 23:52:50 -04:00
Kristian Høgsberg
0953162db8 Fix resizing 2010-06-14 23:22:15 -04:00
Kristian Høgsberg
bf6ceda545 Implement resizing from all sides 2010-06-14 20:25:06 -04:00
Kristian Høgsberg
478d9265f9 Send device name at connect time 2010-06-08 20:34:11 -04:00
Kristian Høgsberg
7824d81e07 Consolidate more code in clients/window.c 2010-06-08 14:59:44 -04:00
Kristian Høgsberg
a85fe3cf45 Use cairo-gl in clients 2010-06-08 14:08:30 -04:00
Kristian Høgsberg
f88ae45e41 Make clients at least compile for now 2010-06-06 22:28:16 -04:00