graphics/microwindows: add Nano-X client/server support and examples for NuttX - #3689
graphics/microwindows: add Nano-X client/server support and examples for NuttX#3689Acfboy wants to merge 6 commits into
Conversation
|
Thank you @Acfboy :-) For sure we need a documentation for that part :-) I just did a rewrite of components / graphics / nx, so other gfx components are in one place, like framebuffer, and maybe nano-x, will push in a free moment this week :-) |
a901697 to
772e4f7
Compare
|
Great, I will look into patches soon. Do not forget to update Microwidows HASH in the but you have pending changes so it would be ideal to change nuttx-apps one when mainline is updated. PS: I will not be available next week/till August 23 night. I leave on this Friday or Saturday evening. |
ppisa
left a comment
There was a problem hiding this comment.
Generally looks OK for me, question is if we need to export
CFLAGS += -DNUTTX=1
from graphics/microwindows/Makefile to control microwindows/microwindows/src/mwin/winmain.c not use dragwp in
int poll = (!canBlock || dragwp);
for NuttX.
772e4f7 to
b3b3dca
Compare
…support for NuttX Build the Nano-X client library, server and (optional) built-in window manager from the bundled Microwindows tree Signed-off-by: Acfboy <AcfboyU@outlook.com>
* Port the nxcalc demo from Microwindows * Connects to the Nano-X server started by examples/nanoxterm * Requires CONFIG_LIBC_FLOATINGPOINT for the result formatting Signed-off-by: Acfboy <AcfboyU@outlook.com>
* Port the nxterm demo from Microwindows * Starts the Nano-X server as a separate task before connecting * Runs an NSH shell instance on a pseudo terminal in the spwaned child instead of exec /bin/sh (no filesystem binaries in flat builds) Assisted-by: OpenCode:DeepSeek-V4-Flash Signed-off-by: Acfboy <AcfboyU@outlook.com>
…h the server * Add CONFIG_MICROWINDOWS_NANOX_NONETWORK which builds the Nano-X client library and server in the linked-in (NONETWORK) mode, so client applications are linked directly with the server and run in the same task, requiring no network stack or socket at all * Reorganize the source lists: the drawing sources (nxdraw, nxutil, nxtransform, nxpaintnc) are shared by both modes, while the server is built from srvnet.c in the network mode and srvnonet.c in the NONETWORK mode * Use MULTITHREAD_SERVER in the network mode so that several client tasks can run at the same time in the flat build * Let the examples/nanoxterm start the server task only in the network mode (NONETWORK applications run the server inside main) Assisted-by: OpenCode:DeepSeek-V4-Flash Signed-off-by: Acfboy <AcfboyU@outlook.com>
* Introduce EXPORTED_INCLUDES in apps/Make.defs; every entry is prefixed with INCDIR_PREFIX and added to CFLAGS/CXXFLAGS so it takes effect in the in-tree build as well * The export target in apps/Makefile copies the content of the listed directories into the include directory of the export package, so out-of-tree applications built from the package can still find the public headers Signed-off-by: Acfboy <AcfboyU@outlook.com>
registers microwindows/src/include through the EXPORTED_INCLUDES mechanism in its Make.defs Signed-off-by: Acfboy <AcfboyU@outlook.com>
b3b3dca to
f5e91f7
Compare
|
@acassis Sorry for my slow progress. It's now ready for review. |
Summary
This PR ports the Nano-X windowing system from Microwindows to NuttX so that X11-style client/server applications can run in a flat build. It contains three logical parts:
graphics/microwindows: Build the Nano-X client library and server from the bundled Microwindows tree. Add:MICROWINDOWS_NANOXto enable Nano-X client/server support.MICROWINDOWS_NANOX_NANOWMto optionally link the Microwindows window manager into the server.MICROWINDOWS_NANOX_NONETWORKto link clients directly with the server without sockets or the network stack.EXPORTED_INCLUDES.examples/nanoxcalc: Port thenxcalcdemo. It connects to the running Nano-X server and displays a calculator keypad.examples/nanoxterm: Port thenxtermdemo. It creates a pseudo-terminal and starts the configured NSH program in the child withposix_spawn()instead of relying on/bin/sh, since flat builds have no filesystem binaries. In network mode, it starts the Nano-X server as a separate task before connecting. It can therefore be used as the init entry point: bootingsim:nanoxopens thenxtermwindow directly, and typingnanoxcalcin it opens the calculator.Impact
nuttxrepository. boards: Add Nano-X Default Configs and Documents for Nuttx nuttx#19912Testing
qemu-intel64:nanox, flat build.nuttxrepository: