Fix a C++ link issue: If constant strings used only in constructor, the don't get linked into the final executable

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4743 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo 2012-05-17 16:55:13 +00:00
parent 0efb245d6d
commit 87e557af84
4 changed files with 28 additions and 11 deletions

View File

@ -803,7 +803,7 @@ bool CWidgetControl::pollMouseEvents(CNxWidget *widget)
else if (m_mouse.leftDrag)
{
// The left button is still being held down
if (m_clickedWidget != (CNxWidget *)NULL)
{
// Handle a mouse drag event

View File

@ -85,6 +85,12 @@ namespace NxWM
enum EStartWindowMessageOpcodes msgId; /**< The message opcode */
FAR void *instance; /**< Object instance. */
};
/**
* The well-known name for the Start Window's message queue.
*/
extern FAR const char *g_startWindowMqName;
/**
* This class is the the start window application.

View File

@ -1,5 +1,5 @@
/********************************************************************************************
* NxWidgets/nxwm/src/cnxconsole.cxx
* NxWidgets/nxwm/src/cstartwindow.cxx
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
@ -57,6 +57,16 @@
* Pre-Processor Definitions
********************************************************************************************/
/********************************************************************************************
* Global Data
********************************************************************************************/
/**
* The well-known name for the Start Window's message queue.
*/
FAR const char *NxWM::g_startWindowMqName = CONFIG_NXWM_STARTWINDOW_MQNAME;
/********************************************************************************************
* CStartWindow Method Implementations
********************************************************************************************/
@ -554,10 +564,10 @@ int CStartWindow::startWindow(int argc, char *argv[])
attr.mq_msgsize = sizeof(struct SStartWindowMessage);
attr.mq_flags = 0;
mqd_t mqd = mq_open(CONFIG_NXWM_STARTWINDOW_MQNAME, O_RDONLY|O_CREAT, 0666, &attr);
mqd_t mqd = mq_open(g_startWindowMqName, O_RDONLY|O_CREAT, 0666, &attr);
if (mqd == (mqd_t)-1)
{
gdbg("ERROR: mq_open(%s) failed: %d\n", CONFIG_NXWM_STARTWINDOW_MQNAME, errno);
gdbg("ERROR: mq_open(%s) failed: %d\n", g_startWindowMqName, errno);
return EXIT_FAILURE;
}
@ -573,12 +583,14 @@ int CStartWindow::startWindow(int argc, char *argv[])
ssize_t nbytes = mq_receive(mqd, &msg, sizeof(struct SStartWindowMessage), 0);
if (nbytes < 0)
{
int errval = errno;
// EINTR is not an error. The wait was interrupted by a signal and
// we just need to try reading again.
if (errno != EINTR)
if (errval != EINTR)
{
gdbg("ERROR: mq_receive failed: %d\n", errno);
gdbg("ERROR: mq_receive failed: %d\n", errval);
}
}
while (nbytes < 0);

View File

@ -77,10 +77,10 @@ CWindowControl::CWindowControl(FAR const NXWidgets::CWidgetStyle *style)
attr.mq_msgsize = sizeof(struct SStartWindowMessage);
attr.mq_flags = 0;
m_mqd = mq_open(CONFIG_NXWM_STARTWINDOW_MQNAME, O_WRONLY|O_CREAT, 0666, &attr);
m_mqd = mq_open(g_startWindowMqName, O_WRONLY|O_CREAT, 0666, &attr);
if (m_mqd == (mqd_t)-1)
{
gdbg("ERROR: mq_open(%s) failed: %d\n", CONFIG_NXWM_STARTWINDOW_MQNAME, errno);
gdbg("ERROR: mq_open(%s) failed: %d\n", g_startWindowMqName, errno);
}
// Add ourself as the window callback
@ -126,7 +126,6 @@ void CWindowControl::destroy(IApplication *app)
{
gdbg("ERROR: mq_send failed: %d\n", errno);
}
}
/**
@ -166,7 +165,7 @@ void CWindowControl::handleMouseEvent(void)
struct SStartWindowMessage outmsg;
outmsg.msgId = MSGID_MOUSE_INPUT;
outmsg.instance = (FAR void *)static_cast<CWidgetControl*>(this);
outmsg.instance = (FAR void *)this;
int ret = mq_send(m_mqd, &outmsg, sizeof(struct SStartWindowMessage),
CONFIG_NXWM_STARTWINDOW_MXMPRIO);
@ -212,7 +211,7 @@ void CWindowControl::handleKeyboardEvent(void)
struct SStartWindowMessage outmsg;
outmsg.msgId = MSGID_KEYBOARD_INPUT;
outmsg.instance = (FAR void *)static_cast<CWidgetControl*>(this);
outmsg.instance = (FAR void *)this;
int ret = mq_send(m_mqd, &outmsg, sizeof(struct SStartWindowMessage),
CONFIG_NXWM_STARTWINDOW_MXMPRIO);