From 38b3dcac9e4dcb225ceaa7a4798a644537c50ece Mon Sep 17 00:00:00 2001 From: patacongo Date: Sat, 19 May 2012 04:20:56 +0000 Subject: NxWM unit test now appears bug free (other than some NxConsole-related issues). git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4750 42af7a65-404d-4744-a932-0658087f49c3 --- NxWidgets/nxwm/src/capplicationwindow.cxx | 7 ++++--- NxWidgets/nxwm/src/ccalibration.cxx | 10 ---------- NxWidgets/nxwm/src/cnxconsole.cxx | 14 ++------------ NxWidgets/nxwm/src/cstartwindow.cxx | 10 ---------- NxWidgets/nxwm/src/ctaskbar.cxx | 16 +++++++++++----- NxWidgets/nxwm/src/ctouchscreen.cxx | 2 +- NxWidgets/nxwm/src/cwindowmessenger.cxx | 19 ++++++++++++++++--- 7 files changed, 34 insertions(+), 44 deletions(-) (limited to 'NxWidgets/nxwm/src') diff --git a/NxWidgets/nxwm/src/capplicationwindow.cxx b/NxWidgets/nxwm/src/capplicationwindow.cxx index 5cf172ea6..65de1b1a4 100644 --- a/NxWidgets/nxwm/src/capplicationwindow.cxx +++ b/NxWidgets/nxwm/src/capplicationwindow.cxx @@ -47,6 +47,7 @@ #include "nxwmconfig.hxx" #include "nxwmglyphs.hxx" +#include "cwindowmessenger.hxx" #include "capplicationwindow.hxx" /******************************************************************************************** @@ -152,15 +153,15 @@ CApplicationWindow::~CApplicationWindow(void) bool CApplicationWindow::open(void) { - // Create a widget control for the tool bar + // Create the widget control (with the window messenger) using the default style - NXWidgets::CWidgetControl *control = new NXWidgets::CWidgetControl(); + CWindowMessenger *control = new CWindowMessenger(); if (!control) { return false; } - // Open the toolbar + // Open the toolbar using the widget control m_toolbar = m_window->openToolbar(CONFIG_NXWM_TOOLBAR_HEIGHT, control); if (!m_toolbar) diff --git a/NxWidgets/nxwm/src/ccalibration.cxx b/NxWidgets/nxwm/src/ccalibration.cxx index 6f5976100..8ba8d0173 100644 --- a/NxWidgets/nxwm/src/ccalibration.cxx +++ b/NxWidgets/nxwm/src/ccalibration.cxx @@ -99,11 +99,6 @@ CCalibration::CCalibration(CTaskbar *taskbar, CFullScreenWindow *window, m_calthread = CALTHREAD_NOTRUNNING; m_calphase = CALPHASE_NOT_STARTED; m_touched = false; - - // Add our messenger as the window callback - - NXWidgets::CWidgetControl *control = window->getWidgetControl(); - control->addWindowEventHandler(&m_messenger); } /** @@ -117,11 +112,6 @@ CCalibration::~CCalibration(void) stop(); - // Remove ourself from the window callback - - NXWidgets::CWidgetControl *control = m_window->getWidgetControl(); - control->removeWindowEventHandler(&m_messenger); - // Although we did not create the window, the rule is that I have to dispose // of it diff --git a/NxWidgets/nxwm/src/cnxconsole.cxx b/NxWidgets/nxwm/src/cnxconsole.cxx index 6a64afc1b..30105910b 100644 --- a/NxWidgets/nxwm/src/cnxconsole.cxx +++ b/NxWidgets/nxwm/src/cnxconsole.cxx @@ -132,11 +132,6 @@ CNxConsole::CNxConsole(CTaskbar *taskbar, CApplicationWindow *window) // Add our callbacks with the application window window->registerCallbacks(static_cast(this)); - - // Add our messenger as the window callback - - NXWidgets::CWidgetControl *control = window->getWidgetControl(); - control->addWindowEventHandler(&m_messenger); } /** @@ -152,11 +147,6 @@ CNxConsole::~CNxConsole(void) stop(); - // Remove ourself from the window callback - - NXWidgets::CWidgetControl *control = m_window->getWidgetControl(); - control->removeWindowEventHandler(&m_messenger); - // Although we didn't create it, we are responsible for deleting the // application window @@ -303,7 +293,7 @@ void CNxConsole::stop(void) // Delete the NxConsole task if it is still running (this could strand // resources). If we get here due to CTaskbar::stopApplication() processing // initialed by CNxConsole::exitHandler, then do *not* delete the task (it - // is already being delete). + // is already being deleted). if (m_pid >= 0) { @@ -320,7 +310,7 @@ void CNxConsole::stop(void) } // Destroy the NX console device - + if (m_nxcon) { nxcon_unregister(m_nxcon); diff --git a/NxWidgets/nxwm/src/cstartwindow.cxx b/NxWidgets/nxwm/src/cstartwindow.cxx index af46e7b82..5c54cba3a 100644 --- a/NxWidgets/nxwm/src/cstartwindow.cxx +++ b/NxWidgets/nxwm/src/cstartwindow.cxx @@ -99,11 +99,6 @@ CStartWindow::CStartWindow(CTaskbar *taskbar, CApplicationWindow *window) // Add our callbacks to the application window window->registerCallbacks(static_cast(this)); - - // Add our messenger as the window callback - - NXWidgets::CWidgetControl *control = window->getWidgetControl(); - control->addWindowEventHandler(&m_messenger); } /** @@ -117,11 +112,6 @@ CStartWindow::~CStartWindow(void) stop(); - // Remove ourself from the window callback - - NXWidgets::CWidgetControl *control = m_window->getWidgetControl(); - control->removeWindowEventHandler(&m_messenger); - // Although we didn't create it, we are responsible for deleting the // application window diff --git a/NxWidgets/nxwm/src/ctaskbar.cxx b/NxWidgets/nxwm/src/ctaskbar.cxx index b4df0bb86..6b0510017 100644 --- a/NxWidgets/nxwm/src/ctaskbar.cxx +++ b/NxWidgets/nxwm/src/ctaskbar.cxx @@ -47,6 +47,7 @@ #include "cwidgetcontrol.hxx" #include "cnxtkwindow.hxx" +#include "cwindowmessenger.hxx" #include "ctaskbar.hxx" /******************************************************************************************** @@ -748,7 +749,7 @@ void CTaskbar::clickIcon(int index, bool click) /** * Create a raw window. * - * 1) Create a dumb CWigetControl instance + * 1) Create a dumb CWigetControl instance (see note below) * 2) Pass the dumb CWidgetControl instance to the window constructor * that inherits from INxWindow. This will "smarten" the CWidgetControl * instance with some window knowlede @@ -756,13 +757,18 @@ void CTaskbar::clickIcon(int index, bool click) * 4) After that, the fully smartened CWidgetControl instance can * be used to generate additional widgets by passing it to the * widget constructor + * + * NOTE: Actually, NxWM uses the CWindowMessenger class that inherits from + * CWidgetControl. That class just adds some unrelated messenging capability; + * It cohabitates with CWidgetControl only becuase it nees the CWidgetControl + * this point. */ NXWidgets::CNxWindow *CTaskbar::openRawWindow(void) { - // Initialize the widget control using the default style + // Create the widget control (with the window messenger) using the default style - NXWidgets::CWidgetControl *control = new NXWidgets::CWidgetControl((NXWidgets::CWidgetStyle *)NULL); + CWindowMessenger *control = new CWindowMessenger((NXWidgets::CWidgetStyle *)NULL); // Get an (uninitialized) instance of the background window as a class // that derives from INxWindow. @@ -797,9 +803,9 @@ NXWidgets::CNxWindow *CTaskbar::openRawWindow(void) NXWidgets::CNxTkWindow *CTaskbar::openFramedWindow(void) { - // Initialize the widget control using the default style + // Create the widget control (with the window messenger) using the default style - NXWidgets::CWidgetControl *control = new NXWidgets::CWidgetControl((NXWidgets::CWidgetStyle *)NULL); + CWindowMessenger *control = new CWindowMessenger((NXWidgets::CWidgetStyle *)NULL); // Get an (uninitialized) instance of the framed window as a class // that derives from INxWindow. diff --git a/NxWidgets/nxwm/src/ctouchscreen.cxx b/NxWidgets/nxwm/src/ctouchscreen.cxx index 1a8a5e967..ba25dd95f 100644 --- a/NxWidgets/nxwm/src/ctouchscreen.cxx +++ b/NxWidgets/nxwm/src/ctouchscreen.cxx @@ -36,7 +36,7 @@ /******************************************************************************************** * Included Files ********************************************************************************************/ - + #include #include diff --git a/NxWidgets/nxwm/src/cwindowmessenger.cxx b/NxWidgets/nxwm/src/cwindowmessenger.cxx index b467f533c..032dd1bf2 100644 --- a/NxWidgets/nxwm/src/cwindowmessenger.cxx +++ b/NxWidgets/nxwm/src/cwindowmessenger.cxx @@ -60,9 +60,14 @@ using namespace NxWM; /** * CWindowMessenger Constructor + * + * @param style The default style that all widgets on this display + * should use. If this is not specified, the widget will use the + * values stored in the defaultCWidgetStyle object. */ -CWindowMessenger::CWindowMessenger(void) +CWindowMessenger::CWindowMessenger(FAR const NXWidgets::CWidgetStyle *style) +: NXWidgets::CWidgetControl(style) { // Open a message queue to communicate with the start window task. We need to create // the message queue if it does not exist. @@ -77,6 +82,10 @@ CWindowMessenger::CWindowMessenger(void) { gdbg("ERROR: mq_open(%s) failed: %d\n", g_startWindowMqName, errno); } + + // Add ourself to the list of window event handlers + + addWindowEventHandler(this); } /** @@ -85,6 +94,10 @@ CWindowMessenger::CWindowMessenger(void) CWindowMessenger::~CWindowMessenger(void) { + // Remove ourself from the list of the window event handlers + + removeWindowEventHandler(this); + // Close the message queue (void)mq_close(m_mqd); @@ -127,7 +140,7 @@ void CWindowMessenger::handleMouseEvent(void) struct SStartWindowMessage outmsg; outmsg.msgId = MSGID_MOUSE_INPUT; - outmsg.instance = (FAR void *)this; + outmsg.instance = (FAR void *)static_cast(this); int ret = mq_send(m_mqd, &outmsg, sizeof(struct SStartWindowMessage), CONFIG_NXWM_STARTWINDOW_MXMPRIO); @@ -173,7 +186,7 @@ void CWindowMessenger::handleKeyboardEvent(void) struct SStartWindowMessage outmsg; outmsg.msgId = MSGID_KEYBOARD_INPUT; - outmsg.instance = (FAR void *)this; + outmsg.instance = (FAR void *)static_cast(this); int ret = mq_send(m_mqd, &outmsg, sizeof(struct SStartWindowMessage), CONFIG_NXWM_STARTWINDOW_MXMPRIO); -- cgit v1.2.3