Add APIs to get access to background
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1343 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
586f69da53
commit
d3038a7a98
@ -38,7 +38,9 @@ NXAPI_CSRCS = nx_bitmap.c nx_closewindow.c nx_connect.c nx_disconnect.c \
|
||||
nx_eventhandler.c nx_fill.c nx_filltrapezoid.c \
|
||||
nx_getposition.c nx_kbdchin.c nx_kbdin.c nx_lower.c \
|
||||
nx_mousein.c nx_move.c nx_openwindow.c nx_raise.c \
|
||||
nx_setsize.c nx_setbgcolor.c nx_setposition.c
|
||||
NXMU_CSRCS = nxmu_server.c nxmu_openwindow.c nxmu_reportposition.c nxmu_kbdin.c \
|
||||
nxmu_mouse.c nxmu_redrawreq.c nxmu_semtake.c
|
||||
nx_releasebkgd.c nx_requestbkgd.c nx_setsize.c \
|
||||
nx_setbgcolor.c nx_setposition.c
|
||||
NXMU_CSRCS = nxmu_kbdin.c nxmu_mouse.c nxmu_openwindow.c nxmu_redrawreq.c \
|
||||
nxmu_releasebkgd.c nxmu_requestbkgd.c nxmu_reportposition.c \
|
||||
nxmu_semtake.c nxmu_server.c
|
||||
NX_CSRCS = $(NXAPI_CSRCS) $(NXMU_CSRCS)
|
||||
|
113
graphics/nxmu/nx_releasebkgd.c
Normal file
113
graphics/nxmu/nx_releasebkgd.c
Normal file
@ -0,0 +1,113 @@
|
||||
/****************************************************************************
|
||||
* graphics/nxsu/nx_releasebkgd.c
|
||||
*
|
||||
* Copyright (C) 2008 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <errno.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/nx.h>
|
||||
#include "nxfe.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-Processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Types
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: nx_releasebkgd
|
||||
*
|
||||
* Description:
|
||||
* Release the background window previously acquired using nx_openbgwindow
|
||||
* and return control of the background to NX.
|
||||
*
|
||||
* Input Parameters:
|
||||
* hwnd - The handle returned (indirectly) by nx_requestbkgd
|
||||
*
|
||||
* Return:
|
||||
* OK on success; ERROR on failure with errno set appropriately
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int nx_releasebkgd(NXWINDOW hwnd)
|
||||
{
|
||||
FAR struct nxbe_window_s *wnd = (FAR struct nxbe_window_s *)hwnd;
|
||||
struct nxsvrmsg_releasebkgd_s outmsg;
|
||||
int ret;
|
||||
|
||||
#ifdef CONFIG_DEBUG
|
||||
if (!wnd)
|
||||
{
|
||||
errno = EINVAL;
|
||||
return ERROR;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Request access to the background window from the server */
|
||||
|
||||
outmsg.msgid = NX_SVRMSG_RELEASEBKGD;
|
||||
ret = mq_send(wnd->conn->cwrmq, &outmsg, sizeof(struct nxsvrmsg_releasebkgd_s), NX_SVRMSG_PRIO);
|
||||
if (ret < 0)
|
||||
{
|
||||
gdbg("mq_send failed: %d\n", errno);
|
||||
return ERROR;
|
||||
}
|
||||
return OK;
|
||||
}
|
||||
|
141
graphics/nxmu/nx_requestbkgd.c
Normal file
141
graphics/nxmu/nx_requestbkgd.c
Normal file
@ -0,0 +1,141 @@
|
||||
/****************************************************************************
|
||||
* graphics/nxmu/nx_requestbkgd.c
|
||||
*
|
||||
* Copyright (C) 2008 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <errno.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/nx.h>
|
||||
#include "nxfe.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-Processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Types
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: nx_requestbkgd
|
||||
*
|
||||
* Description:
|
||||
* NX normally controls a separate window called the background window.
|
||||
* It repaints the window as necessary using only a solid color fill. The
|
||||
* background window always represents the entire screen and is always
|
||||
* below other windows. It is useful for an application to control the
|
||||
* background window in the following conditions:
|
||||
*
|
||||
* - If you want to implement a windowless solution. The single screen
|
||||
* can be used to creat a truly simple graphic environment. In this
|
||||
* case, you should probably also de-select CONFIG_NX_MULTIUSER as well.
|
||||
* - When you want more on the background than a solid color. For
|
||||
* example, if you want an image in the background, or animations in the
|
||||
* background, or live video, etc.
|
||||
*
|
||||
* This API only requests the handle of the background window. That
|
||||
* handle will be returned asynchronously in a subsequent position and
|
||||
* redraw callbacks.
|
||||
*
|
||||
*
|
||||
* Cautions:
|
||||
* - The following should never be called using the background window.
|
||||
* They are guaranteed to cause severe crashes:
|
||||
*
|
||||
* nx_setposition, nx_setsize, nx_raise, nx_lower.
|
||||
*
|
||||
* - Neither nx_opengbwindow or nx_closebgwindow should be called more than
|
||||
* once. Multiple instances of the background window are not supported.
|
||||
*
|
||||
* Input Parameters:
|
||||
* handle - The handle returned by nx_connect
|
||||
* cb - Callbacks to use for processing background window events
|
||||
*
|
||||
* Return:
|
||||
* OK: Success; ERROR of failure with errno set appropriately.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int nx_requestbkgd(NXHANDLE handle, FAR const struct nx_callback_s *cb)
|
||||
{
|
||||
FAR struct nxfe_conn_s *conn = (FAR struct nxfe_conn_s *)handle;
|
||||
struct nxsvrmsg_requestbkgd_s outmsg;
|
||||
int ret;
|
||||
|
||||
#ifdef CONFIG_DEBUG
|
||||
if (!conn || !cb)
|
||||
{
|
||||
errno = EINVAL;
|
||||
return ERROR;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Request access to the background window from the server */
|
||||
|
||||
outmsg.msgid = NX_SVRMSG_REQUESTBKGD;
|
||||
outmsg.conn = conn;
|
||||
outmsg.cb = cb;
|
||||
|
||||
ret = mq_send(conn->cwrmq, &outmsg, sizeof(struct nxsvrmsg_requestbkgd_s), NX_SVRMSG_PRIO);
|
||||
if (ret < 0)
|
||||
{
|
||||
gdbg("mq_send failed: %d\n", errno);
|
||||
return ERROR;
|
||||
}
|
||||
return OK;
|
||||
}
|
||||
|
@ -154,6 +154,8 @@ enum nxmsg_e
|
||||
NX_SVRMSG_DISCONNECT, /* Tear down connection with terminating client */
|
||||
NX_SVRMSG_OPENWINDOW, /* Create a new window */
|
||||
NX_SVRMSG_CLOSEWINDOW, /* Close an existing window */
|
||||
NX_SVRMSG_REQUESTBKGD, /* Open the background window */
|
||||
NX_SVRMSG_RELEASEBKGD, /* Release the background window */
|
||||
NX_SVRMSG_SETPOSITION, /* Window position has changed */
|
||||
NX_SVRMSG_SETSIZE, /* Window size has changed */
|
||||
NX_SVRMSG_GETPOSITION, /* Get the current window position and size */
|
||||
@ -265,6 +267,22 @@ struct nxsvrmsg_closewindow_s
|
||||
FAR struct nxbe_window_s *wnd; /* The window to be closed */
|
||||
};
|
||||
|
||||
/* This message requests the server to create a new window */
|
||||
|
||||
struct nxsvrmsg_requestbkgd_s
|
||||
{
|
||||
uint32 msgid; /* NX_SVRMSG_REQUESTBKGD */
|
||||
FAR struct nxfe_conn_s *conn; /* The specific connection sending the message */
|
||||
FAR const struct nx_callback_s *cb; /* Event handling callbacks */
|
||||
};
|
||||
|
||||
/* This message informs the server that client wishes to close a window */
|
||||
|
||||
struct nxsvrmsg_releasebkgd_s
|
||||
{
|
||||
uint32 msgid; /* NX_SVRMSG_RELEASEBKGD */
|
||||
};
|
||||
|
||||
/* This message informs the server that the size or position of the window has changed */
|
||||
|
||||
struct nxsvrmsg_setposition_s
|
||||
@ -438,6 +456,44 @@ EXTERN void nxmu_openwindow(FAR struct nxfe_conn_s *conn,
|
||||
FAR struct nxbe_window_s *wnd,
|
||||
FAR const struct nx_callback_s *cb);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: nxmu_requestbkgd
|
||||
*
|
||||
* Description:
|
||||
* Perform the server-side operation for the nx_requestbkgd operation:
|
||||
* Give the client control of the background window connection and receipt
|
||||
* of all background window callbacks.
|
||||
*
|
||||
* conn - The client containing connection information [IN]
|
||||
* be - The server state structure [IN]
|
||||
* cb - Callbacks used to process window events
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
EXTERN void nxmu_requestbkgd(FAR struct nxfe_conn_s *conn,
|
||||
FAR struct nxbe_state_s *be,
|
||||
FAR const struct nx_callback_s *cb);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: nxmu_releasebkgd
|
||||
*
|
||||
* Description:
|
||||
* Release the background window previously acquired using nxmu_openbgwindow
|
||||
* and return control of the background to NX.
|
||||
*
|
||||
* Input Parameters:
|
||||
* fe - The front-end state structure
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
EXTERN void nxmu_releasebkgd(FAR struct nxfe_state_s *fe);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: nxfe_reportposition
|
||||
*
|
||||
|
@ -108,7 +108,11 @@ void nxmu_openwindow(FAR struct nxfe_conn_s *conn,
|
||||
be->topwnd->above = wnd;
|
||||
be->topwnd = wnd;
|
||||
|
||||
/* Provide the initial mouse settings */
|
||||
/* Report the initial size/position of the window to the client */
|
||||
|
||||
nxfe_reportposition((NXWINDOW)wnd);
|
||||
|
||||
/* Provide the initial mouse settings to the client */
|
||||
|
||||
#ifdef CONFIG_NX_MOUSE
|
||||
nxmu_mousereport(wnd);
|
||||
|
110
graphics/nxmu/nxmu_releasebkgd.c
Normal file
110
graphics/nxmu/nxmu_releasebkgd.c
Normal file
@ -0,0 +1,110 @@
|
||||
/****************************************************************************
|
||||
* graphics/nxsu/nxmu_releasebkgd.c
|
||||
*
|
||||
* Copyright (C) 2008 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <errno.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/nx.h>
|
||||
#include "nxfe.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-Processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Types
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: nxmu_releasebkgd
|
||||
*
|
||||
* Description:
|
||||
* Release the background window previously acquired using nxmu_openbgwindow
|
||||
* and return control of the background to NX.
|
||||
*
|
||||
* Input Parameters:
|
||||
* fe - The front-end state structure
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void nxmu_releasebkgd(FAR struct nxfe_state_s *fe)
|
||||
{
|
||||
FAR struct nxbe_state_s *be = &fe->be;
|
||||
|
||||
#ifdef CONFIG_DEBUG
|
||||
if (!fe)
|
||||
{
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Destroy the client window callbacks* and restore the server
|
||||
* connection.
|
||||
*/
|
||||
|
||||
be->bkgd.cb = NULL;
|
||||
be->bkgd.conn = &fe->conn;
|
||||
|
||||
/* Redraw the background window */
|
||||
|
||||
nxfe_redrawreq(&be->bkgd, &be->bkgd.bounds);
|
||||
}
|
||||
|
122
graphics/nxmu/nxmu_requestbkgd.c
Normal file
122
graphics/nxmu/nxmu_requestbkgd.c
Normal file
@ -0,0 +1,122 @@
|
||||
/****************************************************************************
|
||||
* graphics/nxmu/nxmu_requestbkgd.c
|
||||
*
|
||||
* Copyright (C) 2008 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <errno.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/nx.h>
|
||||
#include "nxfe.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-Processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Types
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: nxmu_requestbkgd
|
||||
*
|
||||
* Description:
|
||||
* Perform the server-side operation for the nx_requestbkgd operation:
|
||||
* Give the client control of the background window connection and receipt
|
||||
* of all background window callbacks.
|
||||
*
|
||||
* conn - The client containing connection information [IN]
|
||||
* be - The server state structure [IN]
|
||||
* cb - Callbacks used to process window events
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void nxmu_requestbkgd(FAR struct nxfe_conn_s *conn,
|
||||
FAR struct nxbe_state_s *be,
|
||||
FAR const struct nx_callback_s *cb)
|
||||
{
|
||||
#ifdef CONFIG_DEBUG
|
||||
if (!conn || !be || !cb)
|
||||
{
|
||||
errno = EINVAL;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Set the client's callback vtable and and replace the server
|
||||
* connection with the clients connection.
|
||||
*/
|
||||
|
||||
be->bkgd.cb = cb;
|
||||
be->bkgd.conn = conn;
|
||||
|
||||
/* Report the size/position of the background window to the client */
|
||||
|
||||
nxfe_reportposition((NXWINDOW)&be->bkgd);
|
||||
|
||||
/* Redraw the background window */
|
||||
|
||||
nxfe_redrawreq(&be->bkgd, &be->bkgd.bounds);
|
||||
|
||||
/* Provide the mouse settings */
|
||||
|
||||
#ifdef CONFIG_NX_MOUSE
|
||||
nxsu_mousereport(be->bkgd);
|
||||
#endif
|
||||
}
|
||||
|
@ -389,6 +389,19 @@ int nx_runinstance(FAR const char *mqname, FAR struct fb_vtable_s *fb)
|
||||
}
|
||||
break;
|
||||
|
||||
case NX_SVRMSG_REQUESTBKGD: /* Give access to the background window */
|
||||
{
|
||||
FAR struct nxsvrmsg_requestbkgd_s *rqbgmsg = (FAR struct nxsvrmsg_requestbkgd_s *)buffer;
|
||||
nxmu_requestbkgd(rqbgmsg->conn, &fe.be, rqbgmsg->cb);
|
||||
}
|
||||
break;
|
||||
|
||||
case NX_SVRMSG_RELEASEBKGD: /* End access to the background window */
|
||||
{
|
||||
nxmu_releasebkgd(&fe);
|
||||
}
|
||||
break;
|
||||
|
||||
case NX_SVRMSG_SETPOSITION: /* Change window position */
|
||||
{
|
||||
FAR struct nxsvrmsg_setposition_s *setposmsg = (FAR struct nxsvrmsg_setposition_s *)buffer;
|
||||
|
@ -35,8 +35,9 @@
|
||||
|
||||
NX_ASRCS =
|
||||
NXAPI_CSRCS = nx_bitmap.c nx_close.c nx_closewindow.c nx_fill.c \
|
||||
nx_filltrapezoid.c nx_getposition.c nx_kbdchin.c nx_kbdin.c \
|
||||
nx_lower.c nx_mousein.c nx_move.c nx_open.c nx_openwindow.c \
|
||||
nx_raise.c nx_setsize.c nx_setbgcolor.c nx_setposition.c
|
||||
nx_filltrapezoid.c nx_getposition.c nx_kbdchin.c \
|
||||
nx_kbdin.c nx_lower.c nx_mousein.c nx_move.c nx_open.c \
|
||||
nx_openwindow.c nx_raise.c nx_releasebkgd.c nx_requestbkgd.c \
|
||||
nx_setsize.c nx_setbgcolor.c nx_setposition.c
|
||||
NXSU_CSRCS = nxsu_redrawreq.c nxsu_reportposition.c
|
||||
NX_CSRCS = $(NXAPI_CSRCS) $(NXSU_CSRCS)
|
||||
|
@ -67,7 +67,11 @@ static void nxsu_bkgdredraw(NXWINDOW hwnd,
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
static const struct nx_callback_s g_bkgdcb =
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
const struct nx_callback_s g_bkgdcb =
|
||||
{
|
||||
nxsu_bkgdredraw, /* redraw */
|
||||
NULL /* position */
|
||||
@ -78,9 +82,6 @@ static const struct nx_callback_s g_bkgdcb =
|
||||
, NULL /* my kbdin */
|
||||
#endif
|
||||
};
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
|
110
graphics/nxsu/nx_releasebkgd.c
Normal file
110
graphics/nxsu/nx_releasebkgd.c
Normal file
@ -0,0 +1,110 @@
|
||||
/****************************************************************************
|
||||
* graphics/nxsu/nx_releasebkgd.c
|
||||
*
|
||||
* Copyright (C) 2008 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <errno.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/nx.h>
|
||||
#include "nxfe.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-Processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Types
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: nx_releasebkgd
|
||||
*
|
||||
* Description:
|
||||
* Release the background window previously acquired using nx_openbgwindow
|
||||
* and return control of the background to NX.
|
||||
*
|
||||
* Input Parameters:
|
||||
* hwnd - The handle returned (indirectly) by nx_requestbkgd
|
||||
*
|
||||
* Return:
|
||||
* OK on success; ERROR on failure with errno set appropriately
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void nx_releasebkgd(NXWINDOW hwnd)
|
||||
{
|
||||
FAR struct nxfe_state_s *fe = (FAR struct nxfe_state_s *)hwnd;
|
||||
FAR struct nxbe_state_s *be = &fe->be;
|
||||
|
||||
#ifdef CONFIG_DEBUG
|
||||
if (!fe)
|
||||
{
|
||||
errno = EINVAL;
|
||||
return ERROR;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Restore the NX background window callbacks */
|
||||
|
||||
be->bkgd.cb = &g_bkgdcb;
|
||||
|
||||
/* Redraw the background window */
|
||||
|
||||
nxfe_redrawreq(&be->bkgd, &be->bkgd.bounds);
|
||||
return OK;
|
||||
}
|
||||
|
153
graphics/nxsu/nx_requestbkgd.c
Normal file
153
graphics/nxsu/nx_requestbkgd.c
Normal file
@ -0,0 +1,153 @@
|
||||
/****************************************************************************
|
||||
* graphics/nxsu/nx_requestbkgd.c
|
||||
*
|
||||
* Copyright (C) 2008 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <errno.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/nx.h>
|
||||
#include "nxfe.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-Processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Types
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: nx_requestbkgd
|
||||
*
|
||||
* Description:
|
||||
* NX normally controls a separate window called the background window.
|
||||
* It repaints the window as necessary using only a solid color fill. The
|
||||
* background window always represents the entire screen and is always
|
||||
* below other windows. It is useful for an application to control the
|
||||
* background window in the following conditions:
|
||||
*
|
||||
* - If you want to implement a windowless solution. The single screen
|
||||
* can be used to creat a truly simple graphic environment. In this
|
||||
* case, you should probably also de-select CONFIG_NX_MULTIUSER as well.
|
||||
* - When you want more on the background than a solid color. For
|
||||
* example, if you want an image in the background, or animations in the
|
||||
* background, or live video, etc.
|
||||
*
|
||||
* This API only requests the handle of the background window. That
|
||||
* handle will be returned asynchronously in a subsequent position and
|
||||
* redraw callbacks.
|
||||
*
|
||||
* Cautions:
|
||||
* - The following should never be called using the background window.
|
||||
* They are guaranteed to cause severe crashes:
|
||||
*
|
||||
* nx_setposition, nx_setsize, nx_raise, nx_lower.
|
||||
*
|
||||
* - Neither nx_opengbwindow or nx_closebgwindow should be called more than
|
||||
* once. Multiple instances of the background window are not supported.
|
||||
*
|
||||
* Input Parameters:
|
||||
* handle - The handle returned by nx_connect
|
||||
* cb - Callbacks to use for processing background window events
|
||||
*
|
||||
* Return:
|
||||
* OK on success; ERROR on failure with errno set appropriately
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int nx_requestbkgd(NXHANDLE handle, FAR const struct nx_callback_s *cb)
|
||||
{
|
||||
FAR struct nxfe_state_s *fe = (FAR struct nxfe_state_s *)handle;
|
||||
FAR struct nxbe_state_s *be = &fe->be;
|
||||
|
||||
#ifdef CONFIG_DEBUG
|
||||
if (!fe || !cb)
|
||||
{
|
||||
errno = EINVAL;
|
||||
return ERROR;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Replace the NX background windo callbacks with the client's callbacks */
|
||||
|
||||
be->bkgd.cb = cb;
|
||||
|
||||
/* Report the size/position of the background window to the client */
|
||||
|
||||
nxfe_reportposition((NXWINDOW)&be->bkgd);
|
||||
|
||||
/* Redraw the background window */
|
||||
|
||||
nxfe_redrawreq(&be->bkgd, &be->bkgd.bounds);
|
||||
|
||||
/* Provide the mouse settings to the client */
|
||||
|
||||
#ifdef CONFIG_NX_MOUSE
|
||||
nxsu_mousereport(be->bkgd);
|
||||
#endif
|
||||
|
||||
/* In this single-user mode, we could return the background window
|
||||
* handle here. However, we cannot do that in the multi-user case
|
||||
* because that handle is known only to the server. Instead, the
|
||||
* background window handle is returned to the client via a redraw
|
||||
* callback. So we will do the same in the single-user case for
|
||||
* compatibility.
|
||||
*/
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
@ -88,6 +88,8 @@ extern "C" {
|
||||
#define EXTERN extern
|
||||
#endif
|
||||
|
||||
EXTERN const struct nx_callback_s g_bkgdcb;
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
@ -376,6 +376,64 @@ EXTERN NXWINDOW nx_openwindow(NXHANDLE handle,
|
||||
|
||||
EXTERN int nx_closewindow(NXWINDOW hwnd);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: nx_requestbkgd
|
||||
*
|
||||
* Description:
|
||||
* NX normally controls a separate window called the background window.
|
||||
* It repaints the window as necessary using only a solid color fill. The
|
||||
* background window always represents the entire screen and is always
|
||||
* below other windows. It is useful for an application to control the
|
||||
* background window in the following conditions:
|
||||
*
|
||||
* - If you want to implement a windowless solution. The single screen
|
||||
* can be used to creat a truly simple graphic environment. In this
|
||||
* case, you should probably also de-select CONFIG_NX_MULTIUSER as well.
|
||||
* - When you want more on the background than a solid color. For
|
||||
* example, if you want an image in the background, or animations in the
|
||||
* background, or live video, etc.
|
||||
*
|
||||
* This API only requests the handle of the background window. That
|
||||
* handle will be returned asynchronously in a subsequent position and
|
||||
* redraw callbacks.
|
||||
*
|
||||
* Cautions:
|
||||
* - The following should never be called using the background window.
|
||||
* They are guaranteed to cause severe crashes:
|
||||
*
|
||||
* nx_setposition, nx_setsize, nx_raise, nx_lower.
|
||||
*
|
||||
* - Neither nx_opengbwindow or nx_closebgwindow should be called more than
|
||||
* once. Multiple instances of the background window are not supported.
|
||||
*
|
||||
* Input Parameters:
|
||||
* handle - The handle returned by nx_connect
|
||||
* cb - Callbacks to use for processing background window events
|
||||
*
|
||||
* Return:
|
||||
* OK on success; ERROR on failure with errno set appropriately
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
EXTERN int nx_requestbkgd(NXHANDLE handle, FAR const struct nx_callback_s *cb);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: nx_releasebkgd
|
||||
*
|
||||
* Description:
|
||||
* Release the background window previously acquired using nx_openbgwindow
|
||||
* and return control of the background to NX.
|
||||
*
|
||||
* Input Parameters:
|
||||
* hwnd - The handle returned (indirectly) by nx_requestbkgd
|
||||
*
|
||||
* Return:
|
||||
* OK on success; ERROR on failure with errno set appropriately
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
EXTERN int nx_releasebkgd(NXWINDOW hwnd);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: nx_getposition
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user