Commit graph

136 commits

Author SHA1 Message Date
Russ Cox
db20f89c32 devdraw: simplify mac file names
Now that we only have Metal, we can drop the -metal.
Also now that Carbon is gone we can drop the macargv.c,
and then the -objc from object file names.
2020-01-13 16:46:14 -05:00
Russ Cox
f177c0ba18 devdraw: drop pre-metal macOS support
We didn't start using Metal until macOS 10.14,
but it was available on 10.13, which is currently
the oldest Apple-supported version of macOS.
Simplify by deleting the old code.
2020-01-13 16:46:14 -05:00
Russ Cox
cc3d97d52a devdraw: update drawclient test program to run again 2020-01-13 16:46:14 -05:00
Dan Cross
fa325e9b42 Trivial changes: whitespace and modes.
Remote whitespace at the ends of lines.
Remove blank lines from the ends of files.
Change modes on source files so that they
are not executable.

Signed-off-by: Dan Cross <cross@gajendra.net>
2020-01-10 14:54:30 +00:00
Xiao-Yong
e995a0c101 devdraw: cocoa metal screen adds a delayed update (#270)
The immediate display of the screen sometimes miss the update from
the CPU side memory.  No obvious synchronization mechanism is available.
In order to make sure the screen updates properly, we set needsDisplay
again after 16ms delay to ensure a second screen update.
2019-06-19 14:32:57 -04:00
Pocket7878
d4e16c838a devdraw: handle windowDidResize on macOS (#212)
This supports non-live window resize.
2019-06-11 12:56:42 -04:00
Xiao-Yong
cc9ecfbee7 devdraw: cocoa metal screen updates (#215)
* devdraw: cocoa metal screen uses a dirty hack to make everything smooth

* devdraw: cocoa metal screen uses a layer to make fullscreen applications behave

* devdraw: macOS cocoa metal fix resizeimg without img

* devdraw: macOS cocoa metal uses blit instead of render

We directly use the blit command encoder to copy texture to the
framebuffer.  We no longer need to compile the metal shader every
time the application starts just for rendering a flat 2D surface.

* travis: add osx images covering 10.13 and 10.14
2019-05-17 23:17:44 -04:00
Xiao-Yong
317c3cdb76 devdraw: stop redirecting ^H in cocoa-metal (#209) 2019-04-05 15:11:11 -04:00
Fazlul Shahriar
7bb69ba88b libdraw,devdraw: fix compatibility with old 16x16 cursor protocol (#217)
Some libraries that depend on devdraw don't know about
32x32 cursor -- mainly 9fans.net/go/draw.
2019-04-05 15:09:35 -04:00
Chris Schultz
6160158729 devdraw: prefer low-power GPU for macOS metal rendering (#231) 2019-04-05 15:08:20 -04:00
Russ Cox
26c6b25795 devdraw: avoid deadlock on pre-Mojave macOS 2019-04-05 15:04:10 -04:00
Xiao-Yong
0308e1f010 devdraw: fix cocoa metal _flushmemscreen for invalid rectangles (#240)
It is possible to receive multiple screen resize events, and resizeimg
would be called for different sizes, before _flushmemscreen actually
gets called with rectangle sizes different from the most recent
resizeimg call.  The size mismatch would trigger illegal memory
access inside _flushmemscreen.

This commit protects _flushmemscreen by returning early if the requested
rectangle is outside of the current texture rectangle.
2019-04-05 14:44:47 -04:00
Jacob Vosmaer
4d3c36cce4 devdraw: respond to windowDidBecomeKey on darwin (#239)
Fixes bug where devdraw does not "notice" mouse position after task
switch. Fixes https://github.com/9fans/plan9port/issues/232.
2019-04-05 14:43:21 -04:00
Jacob Vosmaer
3d6fc088f0 devdraw: remove os x 10.5 compatibility code 2018-11-15 22:03:27 -05:00
Russ Cox
7d43dde539 devdraw: add Cursor2 support on macOS 10.14 Mojave
This replaces the pixel-art scaling algorithm used for upscaling before.
The results were not crisp enough to serve as everyday cursors.
2018-11-15 20:39:35 -05:00
Xiao-Yong Jin
9af9ceca26 devdraw: rewrite the Cocoa screen using Metal
Add a new macOS cocoa screen, cocoa-screen-metal.m.
Rewrite the macOS cocoa drawing code to use the builtin runloop,
and use Metal to push pixels with CAMetalLayer.

Remove all of the deprecated code, and simplify some of the logic.
Modify mkwsysrules.sh such that the new code is used only when
the system version is equal or higher than 10.14.

Allow touch events to simulate mouse clicks:
three finger tap for the middle mouse button;
four finger tap for the 2-1 chord.

Support Tresize.

Scale 16x16 Cursor up to 32x32 with an EPX algorithm.

Support macOS input sources including the basic dead keys and the
advanced CJK input methods.

Increase the communication buffers in cocoa-srv.c to allow more
input, especially for long sentences prepared by the macOS input
souces.
2018-11-15 20:39:35 -05:00
Gabriel Díaz
000c1a3b19 devdraw: set displaydpi on devdraw x11 attach (#178)
See https://plan9port-review.googlesource.com/c/plan9/+/1470
for discussion of the approach, especially Michael Stapleberg's comment:

Note that chromium, firefox and others have tried this and then switched to using the Xft.dpi X resource, see e.g. https://code.google.com/p/chromium/codesearch#chromium/src/chrome/browser/ui/libgtk2ui/gtk2_ui.cc and especially http://sources.debian.net/src/gnome-settings-daemon/3.18.2-1/plugins/xsettings/gsd-xsettings-manager.c/?hl=824#L80 for some anecdata about why this approach doesn’t work out.

The Xft.dpi resource is being set accurately by desktop environments (GNOME, KDE, …) and can easily be changed by users of niche window managers by editing ~/.Xresources.

I suggest we check only Xft.dpi, without considering the DPI environment variable or the monitor width/height.
2018-11-14 00:19:29 -05:00
Xiao-Yong
a9e66ffa4e devdraw: make ctrl generate 1-click while mouse down (#119)
This makes 2-1 chords possible with touchpad on a mac laptop.
2018-11-13 23:57:56 -05:00
Xiao-Yong Jin
b2f6769830 devdraw: fix some memory leaks in x11 2018-03-27 15:03:12 +02:00
Rudá Moura
680c57a15c devdraw: fix build on macOS < 10.12
After making the build on macOS silent on commit 310ae03,
the build was broken on macOS lesser than 10.12 (Sierra).

This commit conditionally checks the version the of the
SDK before using the defined values for silent build.

Fixes #66.
2017-10-09 10:26:14 +02:00
Russ Cox
00b50225c2 devdraw: fix Mac Kcmd+Shift
Change-Id: Ide32a9397701085b17fbd42f0866eb3de11e4190
Reviewed-on: https://plan9port-review.googlesource.com/2940
Reviewed-by: Russ Cox <rsc@swtch.com>
2017-07-16 02:24:34 +00:00
Russ Cox
310ae03327 all: fix or silence all INSTALL warnings on macOS
Should be a clean build now.

Change-Id: Id3460371cb5e8d4071f8faa9c2aec870d213a067
Reviewed-on: https://plan9port-review.googlesource.com/2781
Reviewed-by: Russ Cox <rsc@swtch.com>
2017-01-06 21:37:31 +00:00
sqweek
6a93bd5c92 devdraw: cocoa: set window title on main thread
Change-Id: Ie818f9246f749a9d3293019a1e01be4ce7e368b9
Reviewed-on: https://plan9port-review.googlesource.com/1400
Reviewed-by: Russ Cox <rsc@swtch.com>
2015-11-11 15:09:34 +00:00
marius a. eriksen
d52bdd3356 devdraw: plumb drag-n-dropped files
Change-Id: I7585870aee57c7482ebdd19c117be7982123ce79
Reviewed-on: https://plan9port-review.googlesource.com/1130
Reviewed-by: Russ Cox <rsc@google.com>
2015-06-03 15:26:27 +00:00
Russ Cox
4eac378eba devdraw: enable retina behavior by default on OS X
Change-Id: I243a1fe3f9ec0841570c4cd69c02be9cfd9ade50
Reviewed-on: https://plan9port-review.googlesource.com/1172
Reviewed-by: Russ Cox <rsc@swtch.com>
2015-02-17 20:52:59 +00:00
Roi Martin
d3a47e14e5 devdraw: fix title and "open in top" on OS X
On OSX 10.10, when you open an application that depends on devdraw, the
title bar only shows the first letter of the application's name. The
patch sets a default title as soon as the window is created, which
fixes this issue.

On OSX 10.10, when you open an application that depends on devdraw, this
application is opened in top of other windows, however the menu bar is
not updated. The patch calls topwin() at the end of makewin() in
src/cmd/devdraw/cocoa-screen.m .

Change-Id: Ie036928b5574c8df20ad8b2b54047e2f7a22bb41
Reviewed-on: https://plan9port-review.googlesource.com/1091
Reviewed-by: Russ Cox <rsc@swtch.com>
2014-12-02 00:51:49 +00:00
David du Colombier
63002b3e5a fix gcc 4.8 warnings
LGTM=rsc
R=rsc
https://codereview.appspot.com/33240044
2014-03-03 22:30:34 +01:00
Russ Cox
042a069825 devdraw: clear altdown on focus out (thanks Ethan Burns)
TBR=rsc
https://codereview.appspot.com/53820044
2014-01-22 13:41:13 -05:00
Russ Cox
1670a244d9 devdraw: set window name to argv[0]
R=rsc
CC=r
https://codereview.appspot.com/12577043
2013-08-06 23:44:06 -04:00
Roger Peppe
d74fdb6edb cmd/devdraw: clear keyboard state on lost focus.
See https://bitbucket.org/rsc/plan9port/issue/128/alt-button-sticks-in-acme-sometimes-after

R=rsc
https://codereview.appspot.com/11453043
2013-07-17 17:55:09 +01:00
Russ Cox
da3ed55e4e devdraw: fix x11 input
R=rsc
https://codereview.appspot.com/10458043
2013-06-21 15:28:02 -04:00
Russ Cox
36bb28dc63 devdraw: control+click = button 2, alt/shift+click = button 3
For single-button mouse users.

R=rsc
https://codereview.appspot.com/7620043
2013-03-07 22:40:47 -05:00
Russ Cox
17934beda0 devdraw: silence unused variable warnings
R=rsc
https://codereview.appspot.com/7304064
2013-02-08 12:46:59 -05:00
Russ Cox
5154e54d8b devdraw: disable XCopyArea optimization
Ubuntu Precise seems to have a buggy X server
that sometimes fails at XCopyArea. Let devdraw
do it itself.

This will slow down remote X a little bit,
but slow and correct is better than fast and broken.

R=rsc
https://codereview.appspot.com/7310069
2013-02-08 12:44:56 -05:00
Christian Kellermann
1a512ec048 fontsrv: fix build on OpenBSD 5.2
R=rsc
CC=plan9port.codebot
https://codereview.appspot.com/6850108
2012-12-11 12:45:45 -05:00
Russ Cox
58b1904e3e devdraw: fake dpi calculation on Mac
R=rsc
http://codereview.appspot.com/6782115
2012-11-25 23:55:27 -05:00
Russ Cox
ffaaaf9dae devdraw: use %R not Fn-F3 for retina toggle
R=rsc
http://codereview.appspot.com/6854093
2012-11-25 23:47:54 -05:00
Russ Cox
55905845f3 devdraw: add forcedpi toggled by Fn+F3 on Mac
R=rsc
http://codereview.appspot.com/6846104
2012-11-25 23:38:14 -05:00
Russ Cox
c6d1f20537 devdraw: fix retina mode
R=rsc
http://codereview.appspot.com/6847104
2012-11-25 22:43:57 -05:00
Russ Cox
d0e0701913 devdraw, libdraw: add display->dpi
Fixed at 100 right now, but the plan is to make it accurate
and then use it.

R=rsc
http://codereview.appspot.com/6856091
2012-11-25 21:41:52 -05:00
Shenghou Ma
7b9ef735a8 devdraw: restore compilation on OS X 10.6
Also add some ignored files to .hgignore

R=rsc
http://codereview.appspot.com/6842089
2012-11-25 21:20:18 -05:00
Rob Kroeger
e13727e3c4 plumb.app: accept plumb:foo as alias for foo
R=rsc
CC=plan9port.codebot
http://codereview.appspot.com/5495046
2012-10-21 12:53:33 -04:00
Caio Oliveira
e4122a42b9 devdraw: map X11 dead_diaresis to double quote
R=rsc
CC=plan9port.codebot
http://codereview.appspot.com/6690049
2012-10-21 12:12:00 -04:00
Russ Cox
0cfb376070 fix clang warnings reported by Tuncer Ayaz
R=rsc
http://codereview.appspot.com/6744054
2012-10-21 11:25:08 -04:00
Russ Cox
220c15d2b7 fix gcc 4.7 warnings (thanks Tuncer Ayaz)
R=rsc
http://codereview.appspot.com/6744053
2012-10-20 13:36:52 -04:00
Rob Kroeger
ef99c9f1ae devdraw: MacBook retina support
Enable with export devdrawretina=1 (everything will be smaller).

R=rsc
CC=plan9port.codebot
http://codereview.appspot.com/6592072
2012-10-16 13:55:44 -04:00
Russ Cox
60a47420a8 devdraw: prefer 24-bit over 15-bit or 16-bit.
Fixes remote X11 use via XQuartz 2.7.4.

R=rsc
http://codereview.appspot.com/6624058
2012-10-07 09:48:47 -04:00
David Jeannot
9bcf137376 devdraw: make it 3 times faster on OS X
This patch reverts the recent patch named "devdraw: fix for OS X 10.8", and fixes redrawing on OSX 10.8 differently, making scrolling under Acme 3 times faster.

R=rsc, mirtchovski
CC=plan9port.codebot
http://codereview.appspot.com/6452087
2012-08-03 13:26:46 -04:00
Rob Kroeger
ad4025bd76 devdraw: fix for OS X 10.8 (Mountain Lion)
In MacOS 10.8, the NSBitmapImageRep class appears to cache the specified
image data at the time of construction. As a result updates to the
backing memimage object do not get pushed to the screen in flushimg.

This patch creates the NSBitmapImageRep object over again for each
flushimg which would appear to fix the problem.

R=rsc
CC=plan9port.codebot
http://codereview.appspot.com/6443063
2012-07-31 11:24:44 -04:00
David Jeannot
1f4c574440 devdraw: fix mouse warping with multi-monitor on OS X
R=rsc
CC=plan9port.codebot
http://codereview.appspot.com/5748043
2012-03-05 21:14:34 -05:00