37 Commits

Author SHA1 Message Date
Andy Weiss 5b870a218f Add support for setting window size limits for glfw (#13415)
Add a function to the window which calls the glfw function for fixing
the size limits of the window. This can then be called after window
creation.
2019-12-08 13:58:58 -08:00
gaaclarke 89e395853c Refactor to passing functions by const ref (#13975)
Moved our code to passing functions by const ref
2019-11-22 12:20:02 -08:00
chunhtai daf1eb9a6a add windows embedding test (#12423) 2019-10-03 12:42:44 -07:00
Luca Zuccarini cd1801c121 Add a method to flutter_window_controller to destroy the current window. (#12076)
This allows the embedder to be shutdown by means other than manually closing the window (e.g. by handling a SIGINT).
2019-09-30 10:58:36 -07:00
Jason Simmons b4d7655522 Fix continuous event polling in the GLFW event loop (#12320)
* Do not pass a milliseconds::max() timeout that will overflow when converted
  to nanoseconds
* Avoid holding the task_queue_mutex_ while calling glfwWaitEventsTimeout
* Use a signed type to hold the difference between a task's timestamp and
  the current engine time

Fixes https://github.com/flutter/flutter/issues/40281
2019-09-17 13:54:38 -07:00
stuartmorgan 709fc6e00c Adds PluginRegistry to the C++ client wrapper API (#12287)
Makes the plugin registration structure consistent with macOS. This will
be used in generated plugin registrant files rather than a specific
implemenation class, so this helps unblock the creation of generated
registrants on Windows and Linux.
2019-09-17 11:41:22 -07:00
Francisco Magdaleno 5c8611194d [glfw/windows] Stops keeping track of input models (#12234) 2019-09-12 15:30:53 -07:00
shoryukenn 38d545ee17 Improve Unicode handling on Windows (#11899)
Significantly improves the behavior of non-ASCII text input on Windows. Correctly
processes incoming character events as UTF-16, and for now uses UTF-32 for
the text model so that the existing index-based logic will work much more often.

Future work is still needed, but this will handle far more cases correctly.
2019-09-08 12:13:59 -07:00
Chinmay Garde d5242ff205 Append newlines to EOF of all translation units. (#11654)
We are switching to -Wnewline-eof soon and these will become errors. Anyway, this was undefined behavior.
2019-08-28 15:06:49 -07:00
stuartmorgan 4f6f390b51 Allow overriding the GLFW pixel ratio (#11388)
Allows a client to set a specific pixel ratio rather than using one
computed based on the screen details.

Fixes https://github.com/flutter/flutter/issues/37620
2019-08-22 16:49:23 -07:00
stuartmorgan 6f911ab372 Allow non-resizable windows in GLFW embedding (#11386)
Adds a flag to create non-resizeable windows.

Since the number of parameters is getting awkward, extracts
window-related parameters and engine-related parameters into structs for
clarity. This also removes some duplication in method signatures.

The window parameters struct change is also made to the C++ wrapper,
making this a breaking change for the runners.

Fixes https://github.com/flutter/flutter/issues/37623
2019-08-22 16:48:22 -07:00
stuartmorgan fa161274fb Switch to an incremental runloop for GLFW (#11368)
Rather than running the runloop forever, have the API expose an incremental runloop. This allows clients to do other processing if they need it.

This allows for removing the odd construction of having knowledge of GTK event handling built into the library even though nothing in the library uses it; instead runner applications that use GTK plugins (such as FDE's testbed) can do that processing at the application level instead.
2019-08-22 11:39:00 -07:00
stuartmorgan 9f8b1d223e Clean up Windows and Linux build output (#11324)
Final portion of reworking the names of the Linux and Windows desktop build outputs.

See flutter/flutter#38589
2019-08-21 05:53:38 -07:00
Francisco Magdaleno a79a31a627 [glfw] Send the glfw key data to the framework. (#9386) 2019-08-20 15:55:51 -07:00
James Clarke ff484d4f69 [Windows] Alternative Windows shell platform implementation (#9835)
Start work on flutter/flutter#30726 by adding an alternative win32 shell platform implementation for Windows that is not based on GLFW and that uses LIBANGLE for rendering and native win32 windowing and input. This change does not replace the GLFW implementation but rather runs side by side with it producing a secondary flutter_windows_win32.dll artifact. The following items must be added to attain parity with the GLFW implementation:
- Custom task scheduling
- Support for keyboard modifier keys
- Async texture uploads
- Correct high DPI handling on Windows versions < 1703
and will be added in subsequent changes.
2019-08-14 15:52:52 -07:00
Francisco Magdaleno 6aad13910c [glfw] Enables replies on binary messenger in glfw embedder (#9948) 2019-07-31 14:27:46 -07:00
stuartmorgan 7d320c45ab Add a macro for prefixing embedder.h symbols (#9851)
embedder.h is a C API, so has no namespace, and only uses 'Flutter' as a
prefix for most symbol names. This creates potential collisions with
other code; for instance, FlutterEngine is the name of a type in
embedder.h, but also an ObjC class in the iOS Flutter API.

This adds a macro that can be set to prefix symbol names, allowing
clients (notably, the macOS embedding) to adjust the names used by the
embedding API internally without breaking ABI or API compatibility for
the standard engine build.

Currently the macro is only applied to FlutterEngine, since that's the
symbol that is currently at issue, but it can be expanded to other
symbols in the future.
2019-07-23 05:48:48 -07:00
Chinmay Garde 4e344e6cd2 Wire up custom event loop interop for the GLFW embedder. (#9089) 2019-06-29 19:35:22 -07:00
Francisco Magdaleno e6d3552216 [glfw] Implement SystemNavigator.pop (#9365)
* [glfw] Implement SystemNavigator.pop

* Exit the program

* Add success result
2019-06-20 09:55:12 -07:00
Francisco Magdaleno 0ca0a41614 [glfw] Implement clipboard support from GLFW api (#9361) 2019-06-18 16:57:01 -07:00
Jason Simmons 6aaf5b38df Build the GLFW shell on Linux host builds but not target builds (#9320)
Linux targets building the embedder library may be targeting environments
that do not support GLFW and GTK.
2019-06-13 16:22:33 -07:00
stuartmorgan 6dc4d6ca09 Add refresh callback to GLFW shell (#9280)
In some cases, the window needs to be redrawn without a resize. This
adds a callback for that case to trigger a repaint.

Since there's no embedding API for repainting, trigger it with a window
metrics event using the current window size.

Fixes https://github.com/flutter/flutter/issues/30731
2019-06-11 16:16:14 -07:00
stuartmorgan 95f9b3db6e Fix crash on minimize with GLFW shell (#9278)
Fixes a divide-by-zero in pixel density computation.
2019-06-11 11:50:19 -07:00
Chinmay Garde 37b367e4d2 Allow specifying both Dart and non-Dart fixtures in engine unit-tests. (#9113)
* Allow specifying both Dart and non-Dart fixtures in engine unittests.

This fixes numerous issues in the way in which fixtures were managed
in the engine unit-tests.

* Instead of only being able to specify Dart fixtures, unit-tests may specify
  non-Dart fixtures as well. These are simply copied over to the fixtures
  directory known to the unit-test at runtime.
* An issue where numerous Dart files could be given to the kernel snapshotter
  has been addressed. It was anticipated that such a (legal) invocation to the
  kernel snapshotter would produce a snapshot with the contents of all the Dart
  files added to the root library. This is incorrect and the behavior in this
  case is undefined.
* Dart files referenced by the main Dart file are correctly tracked via a
  depfile.
* The snapshotter arguments have been cleaned up to get rid of unused
  arguments (`—strong`) and  the use of the VM product mode argument has been
  corrected to no longer depend on the Flutter product mode.
2019-05-28 19:11:47 -07:00
stuartmorgan 75678602b4 Minor fixes/adjustments to the GLFW shell (#8990)
- Makes json_method_codec.cc compatible with the last stable RapidJSON release.
- Allows removing the GTK dependency with a compile flag.
- Fixes a missing break in a switch flagged by some toolchains.
2019-05-20 14:36:59 -04:00