Commit Graph

50 Commits

Author SHA1 Message Date
Jeremy Huddleston d8c9ba37ab XQuartz: pbproxy: Push dpy init and CFRunLoop hook setup into the pbproxy thread to avoid possible deadlock
(cherry picked from commit 49e59d32b88e4fad070f230b5efaa261b47f78db)
2009-01-02 11:02:42 -08:00
Jeremy Huddleston 029d255a65 XQuartz: pbproxy: Release display notification lock when not needed to avoid deadlock
(cherry picked from commit 22f664ab95a0cae981e9cefad6f075d051583ca5)
2008-12-21 21:35:22 -08:00
Jeremy Huddleston fa4f2527a5 XQuartz: pbproxy: Simplify linking
(cherry picked from commit 909cc5c4dca0f63e90505575bbd454b46a4670cc)
2008-12-03 21:59:23 -08:00
Jeremy Huddleston 94df1ab7f0 XQuartz: Force X11Controller to reset a broken DISPLAY envvar.
(cherry picked from commit f1a52b5b5ac31702497937efe3ac578be9a6c54f)
2008-11-25 11:53:06 -08:00
Jeremy Huddleston 065d2afb0c XQuartz: Add fallback for xpbproxy's display for Tiger or no-launchd-Leopard
(cherry picked from commit 7a8c6665949d7804a97ef2539a74ec4aa682e1cc)
2008-11-25 00:54:52 -08:00
Jeremy Huddleston b55cad4569 XQuartz: Don't hardcode values of org.x.X11 for the preferences domain
(cherry picked from commit 3a500d9247cf34686ec17b4a88c34d51ecd38ecd)
2008-11-25 00:54:37 -08:00
Jeremy Huddleston 5d47a5d652 XQuartz: pbproxy: Added some typedefs for types not available on Tiger
(cherry picked from commit 0947aa7911f1de44bfe16e505a757b659c5ab2a8)
2008-11-21 10:59:34 -08:00
Jeremy Huddleston d7ee76f9dd XQuartz: pbproxy: Push the pbproxy Xevent processing into its own thread
and just have the AppKit thread wake it up.
(cherry picked from commit 799715b8f3327c8da59ab45706e85af2d2c438e4)
2008-11-21 10:59:10 -08:00
Jeremy Huddleston c4ec71b405 XQuartz: pbproxy: nuke RCS Id, update header license/copyright
(cherry picked from commit 477c6968a88429bb9c10222a5836bdc936d10ab1)
2008-11-19 10:58:15 -08:00
Jeremy Huddleston 42f330cf9e XQuartz: pbproxy: Remove thread-main.m
it got accidently added and isn't used.
(cherry picked from commit cb6ffce68a2d10022fa92725d2d1837da4b3b89f)
2008-11-19 10:58:06 -08:00
Jeremy Huddleston e8112784e8 XQuartz: Integrated xpbproxy into the server.
Added a configure option called --enable-standalone-xpbproxy which is useful for deveoping xpbproxy.
The 'active' switch in preferences just disables the in-server xpbproxy (not this standalone).
(cherry picked from commit 42944936326ef8732f622db9f75b79a92980550d)
2008-11-15 19:52:34 -08:00
George Peter Staplin 273df54685 XQuartz: pbproxy: Fix a bug that prevented nedit CLIPBOARD from being proxied.
It seems that we were calling copy_completed: too soon.  Now we return instead
of falling through to the free_propdata, and copy_completed:.
(cherry picked from commit 5797d5b662817a3369a74a673f4a7c995cde75cf)
2008-10-28 22:01:34 -07:00
George Peter Staplin 313d87341a XQuartz: pbproxy: Work around bugs in some apps that aren't ICCCM compliant.
Eterm ends up setting the type of the property to TARGETS, instead of ATOM.
That's why it wasn't working.
(cherry picked from commit 9be5998ede7427f14dd9597e117b3d6b427ba4e5)
2008-10-28 22:01:29 -07:00
George Peter Staplin 9007d3beea XQuartz: pbproxy: Add code to handle PICT conversion to PNG and JPEG.
This may work, unfortunately I don't have test apps that fail.

The way it works is by using an NSImage class initWithPasteboard:
method, which we then get the TIFFRepresentation of, and convert
to PNG or JPEG.

The TIFFRepresentation uses NSTIFFCompressionNone; which should be
lossless.
(cherry picked from commit 8d048cfa956f4a0860250cc836a6748912b37ad8)
2008-10-28 22:01:22 -07:00
Jeremy Huddleston b742da0b71 XQuartz: pbproxy: fixed blocking
(cherry picked from commit bb330a1b1c480e89727fb75ff5aeb71f4afc5ee3)
2008-10-28 22:00:52 -07:00
Jeremy Huddleston c885110aed Xquartz: pbproxy: Some debugging about unhandled mime types... this will spam up quick, but will be useful for a while...
(cherry picked from commit 3647215310f5a52126661b9ec473dcfeed25b40f)
2008-10-28 22:00:42 -07:00
George Peter Staplin d837d4e2af XQuartz: pbproxy: pbproxy.h had invalid macro usage with 2 #else statements, so it wasn't building. Fix the build.
(cherry picked from commit 6bcbb9ba85d95d7df63811a482abc39c4d595366)
2008-10-23 19:22:28 -07:00
Jeremy Huddleston 28d4f71193 XQuartz: pbproxy: Fix compilation on case-sensitive file systems...
(cherry picked from commit 6622efca216663c99d112c7a226bde691d1f3215)
2008-10-23 16:30:53 -07:00
Jeremy Huddleston 2d764e21f2 XQuartz: pbproxy: SIGHUP reloads preferences.
(cherry picked from commit cbc0935ef74ebd76ed3db16d6ab86043eeed42a3)
2008-10-23 14:16:57 -07:00
George Peter Staplin f935c11398 XQuartz: pbproxy: Fix 2 bugs with the preferences.
Add dump_prefs() for instrospection.

Make prefs_get_bool a little more clear.

In get_property don't assume that the Mac realloc(NULL, 0); returns
non-NULL.  We shouldn't depend on implementation-defined behavior too
much.

Add more commentary in various spots.

Add TARGETS in the TARGETS response.  I don't know why some X11 apps
do this, but it could be something that some weird toolkit/app tests
for.

In reload_preferences add preferences synchronization, so that xpbproxy
reloads the preferences, and picks up any changes.

Fix a typo/misspelling of the sync_clipboard_to_pasteboard preference.
(cherry picked from commit 165cbbb90c793d9335ea76f0274b1f60ad295903)
2008-10-21 09:32:03 -07:00
Jeremy Huddleston 84ef8ed6fb XQuartz: implemented primary-on-grab and fixed clipboard-to-pasteboard
(cherry picked from commit bcb83eea729a01026d99d1cfc2b77385b5b275fd)
2008-10-15 17:31:54 -07:00
Jeremy Huddleston 2998e48be3 Xquartz: Fix parallel builds
(cherry picked from commit 1fe7298a3b9a2ed82c612292f9e547cf78f99ae5)
2008-10-08 18:44:17 -07:00
Jeremy Huddleston ed3134918d XQuartz: pbcopy: Re-enabled some code I commented out for testing
(cherry picked from commit 9b5d11409264080e394c8f18e06237122de80014)
2008-10-04 21:17:09 -07:00
Jeremy Huddleston b3a971d8b5 XQuartz: xpbproxy: Support some of the preference toggles from X11.app, cleaned up CLIPBOARD_MANAGER atom management.
(cherry picked from commit f7673bb4de3c1f71eb390a3279eed3589efc3df4)
2008-10-04 21:17:02 -07:00
George Peter Staplin 7bb73a9513 XQuartz: pbproxy: Possibly fix a memory leak by using an [NSApp run] loop,
instead of calling CFRunLoopRun() directly.  The leak wasn't reproducible on
this machine, but someone was able to produce a leak trace with Instruments
that indicates it was leaking in the CFRunLoopRun() path.

x-input.m: dequeue and ignore events when pbproxy_active is false.

x-selection.h: add an is_active method that is used by x-input.m to ignore
events.

x-selection.m: Handle nearly every preference, except for primary_on_grab,
which I don't really understand yet.
(cherry picked from commit 4d51ad851e64da83cbdfb0a4a22428418a7bcf75)
2008-10-03 11:14:49 -07:00
George Peter Staplin b1d0b19661 XQuartz: pbproxy: Make the signal handler safer by using _exit, and only exit.
Remove some unnecesssary headers.

Remove some dead code that was never called or used in pbproxy.

Make use of an NSAutoreleasePool in x_init.  It could potentially cause a leak
on a startup without this.

Start adding reload_preferences to the x_selection class, as well as event
handling for that.
(cherry picked from commit 602e8ba8f7ee196696bc9e3cea6ecdf3200dcf5c)
2008-10-03 11:14:30 -07:00
Jeremy Huddleston b7ad86ff8a Xquartz: xpbproxy: Split out app-specific stuff to app-main.m in prep for making this into a thread.
(cherry picked from commit c2012138a520560f8a2160518ea73fced410c3b7)
2008-10-03 11:12:57 -07:00
Jeremy Huddleston 6020c3fbfe XQuartz: Added a --enable-integrated-xpbproxy configure option for building xpbproxy as an app or as a thread.
(cherry picked from commit 8edc5fb38c922f28659d2f823148339a8907c4d9)
(cherry picked from commit 88033a66a5549870fd053795b019d4c22950425b)
2008-10-03 11:11:47 -07:00
George Peter Staplin eb8be3e90a XQuartz: pbproxy: Fix another STRING bug.
Fix the usage of the NSString cStringUsingEncoding: - it doesn't NUL
terminate the string, which lead to a bus error.  So, we use
lengthOfBytesUsingEncoding: to get the length in bytes instead of
strlen().
(cherry picked from commit 6333d619e747c3b6bd3ba7557e35c0e5f6daa40f)
2008-09-26 12:31:33 -07:00
George Peter Staplin edfa3f8233 XQuartz: pbproxy: Fix a bug that rxvt brought out in STRING copying. Now I can copy and paste to/from rxvt correctly.
(cherry picked from commit 82a4dc5f0f31a7911ee1cce5d1b162077befa811)
2008-09-26 12:31:29 -07:00
Jeremy Huddleston ee87c9b024 XQuartz: pbproxy: Removed stray SPI include.
(cherry picked from commit 2fb2bc77b804d7b63002c1423cb0bfc658eeee45)
2008-09-26 12:31:18 -07:00
George Peter Staplin 591cc57627 XQuartz: pbproxy: Fix 3 paths that could leak memory.
2 of the paths leaked, when INCR transfers were done.  Now we
are leak free according to the leaks program for all transfers
I have tried so far.
(cherry picked from commit aa98db576bc02f0765cb35d0282a894ba3778213)
2008-09-26 12:31:12 -07:00
George Peter Staplin 586fbc91df XQuartz: pbproxy: Fix NSObject memory leaks by properly using the
NSAutoreleasePool.   Now the usage is consistent.  In x_input_run()
we create a pool, and release it after processing the XEvents.

Add some getpid() output to main for debugging.  It needs a bit more
testing before the next release.

Don't retain the NSPasteboard as the old code did.  That may have
contributed to the leak, and it made it so that we needed the
NSAutoreleasePool created in main().

Remove the _known_types, and _pasteboard instance variables from
the x_selection class.  They aren't needed anymore.

The leaks program now indicates 0 leaks after some usage.  I want
to test further, but this seems much better, and my memory usage
graph indicates it's not growing.
(cherry picked from commit b245d84a72ee3929546cd11a6eba3c60fb4a4d95)
2008-09-26 12:31:06 -07:00
George Peter Staplin 238999cfc9 XQuartz: pbproxy: Add a comment to pbproxy.h about how the DB()
macro causes a leak (according to the leaks program).

Attempt to fix several other leaks with release method calls.
For some reason the process still grows more than it should...

I will need to use some better methods than leaks, and malloc_history
I suspect.  Whatever is leaking, it's hard to find.  I need to isolate
the cases more.

Add a missing image/jpeg branch.

Remove read_prop_32 - it's not used.
(cherry picked from commit 63a680354dcb545fef935ac97596dd35ceaed960)
2008-09-26 12:31:01 -07:00
George Peter Staplin 852a0b0dde XQuartz: pbproxy: Add an X error handler that returns 0.
Move the struct atom_list into the x-selection class, so that it's
no longer a global variable named atoms.  This may ease pthread
integration and reduce the chances of symbols conflicting.
(cherry picked from commit c1403c713ca80104ae3736bd2ed1eb6ffa5192b6)
2008-09-21 17:40:42 -07:00
George Peter Staplin 7fa6fc5ad0 XQuartz: pbproxy: Fix a bug that occured when a PICT format was available.
We may need another branch to convert a PICT to a PNG or JPEG.  For now
TIFF works well in all of the test image copying apps when converted to
PNG or JPEG with an NSBitmapImageRep class.
(cherry picked from commit adf339d8f948fc1e308dbcae38fcfce504b5b0ab)
2008-09-21 17:40:41 -07:00
George Peter Staplin f67490ceb5 XQuartz: pbproxy: Make the proxy handle copy request races, and PRIMARY
INCR transfers mixed with a CLIPBOARD change.

Fix a bug with some UTF-8 transfers.  I can only guess that my UTF-8
tests before were inadequate.  I can now copy/paste any characters between
uxterm and Textedit.app.
(cherry picked from commit 7ca1532e8e6e2c733c9c508eee0de73d09ecb947)
2008-09-21 17:40:41 -07:00
George Peter Staplin a928cae57b XQuartz: pbproxy: Add a missing include of Xutil.h. Another header
seems to have done this before, but correctness matters.
(cherry picked from commit 1b4987e779d97b90669bac2405a4672085677f7c)
2008-09-21 17:40:16 -07:00
George Peter Staplin 749bdf19b2 XQuartz: pbproxy: Add COMPOUND_TEXT handling. Do misc. cleanups with testing
to verify that the behavior didn't change.

main.m: XInternAtom compound_text, and atom_pair.

pbproxy.h: Add compound_text and atom_pair to the struct atom_list.

x-selection.m: Add an #include of Xutil.h.  Refactor the reply struct
initialization to be done in a common place.  Add send_reply: to simplify
the code a bit more.  Add send_compound_text: which handles the
COMPOUND_TEXT type.  Add the beginnings of a send_multiple:.  Change
handle_image:extension: to handle_image:.  The extension: message isn't
needed anymore.
(cherry picked from commit 1e9460abdf5bafe46215966bbef3e796cb1c33e0)
2008-09-21 17:40:16 -07:00
George Peter Staplin 00bfbee59f XQuartz: pbproxy: pbproxy now responds to selection request events.
We can now copy and paste images to and from X11.  Text copying and
pasting works as well.

The NSPasteboard can contain TIFF or PICT images, and pbproxy will
translate to an image/png or image/jpeg request, and list those in the
TARGETS.

I added a description of the basic design at the top of x-selection.m.

I removed the request_data x_selection class struct.  It's not needed.
(cherry picked from commit 4a8daf884694c9c420c45d427f1f84e608e7e48f)
2008-09-21 17:40:16 -07:00
George Peter Staplin 811e9f5e9e XQuartz: pbproxy: Use an NSBitmapImageRep to convert an "image/png" selection
to a TIFFRepresentation for use with NSPasteboard.

This has been tested with the Gimp and works with some minor quartz-wm changes.
The Finder clipboard shows the image updates after an Edit -> Copy.
(cherry picked from commit 12912adaeea759d30f96d8ae51a84fd1659ea0ac)
2008-09-21 17:40:16 -07:00
George Peter Staplin 23ec8261b6 XQuartz: pbproxy: The greedy CLIPBOARD handling now works for text.
This change adds some [self own_clipboard] calls in the necessary places to get the proper greedy behavior.

UTF8_STRING and STRING properties seem to work well now with the test cases (PRIMARY, and CLIPBOARD).  I can copy from several different X apps, and have the behavior be correct when pasting.  I also verified that quartz-wm isn't doing the copying, by disabling the quartz-wm paths.
(cherry picked from commit 934669f732c28f07b9d934d8f8f0b63ccfebd900)
2008-09-21 17:40:15 -07:00
George Peter Staplin 7c2eb3d41a XQuartz: pbproxy: return the TARGETS list as a 32-bit list to fix a bug that was in the original.
Add TRACE() calls where appropriate to try to figure out why we are losing CLIPBOARD at times, after transferring PRIMARY to the NSPasteboard.

Use the new pbproxy_clipboard_to_pasteboard where appropriate.
(cherry picked from commit 40190675a6c1889cca3574e5d1a9c16ab74315a7)
2008-09-21 17:40:15 -07:00
George Peter Staplin 81c836902d Rename reclaim_clipboard to claim_clipboard.
Convert the puts usage to use DB().

Add the initial handle_image method.

Check for nil in the NSString instantiation in various places.

Add some commentary to enhance the clarity of why I did some things.
(cherry picked from commit 37361567b65241eab64e8b30cd9729d0e71a86d2)
2008-09-21 17:40:15 -07:00
George Peter Staplin 85e23affea Add an image_jpeg Atom.
(cherry picked from commit ea9dc27977c5eab666f2aa2d914e4e28d36758c7)
2008-09-21 17:40:15 -07:00
George Peter Staplin 6b42f40ff9 Rename reclaim_clipboard to claim_clipboard.
(cherry picked from commit d333a8e2b5514b8b76a78c6a13a3f5149ea8de27)
2008-09-21 17:40:15 -07:00
George Peter Staplin 2ab56981b1 Add image/jpeg type, and rename reclaim_clipboard to claim_clipboard.
(cherry picked from commit 32b175ef62b68a971784e51e937e358cb10e20ac)
2008-09-21 17:40:14 -07:00
Jeremy Huddleston cbd32645f7 XQuartz: pbproxy: Added global variables to customize how pbproxy behaves
(cherry picked from commit 21a2d0b8d03faf1c66ec0c5c11fbd2ab24547727)
2008-09-21 17:40:14 -07:00
Jeremy Huddleston 5b397642cd XQuartz: pbproxy: First round of updates to pbproxy from George.
(cherry picked from commit 5c8b956f8f3f17e8d577d97cb66424954be72684)
2008-09-21 17:40:14 -07:00
Jeremy Huddleston 1669308be6 XQuartz: Added pasteboard proxy code stripped out of quartz-wm.
(cherry picked from commit 1f842c71c35db031a24de646429834d6054adf1d)
(cherry picked from commit 144746223d8dc3f6ff2a0e805aa27a6e57df558a)
2008-09-03 09:33:58 -07:00