Changeset 3731d31 in mainline


Ignore:
Timestamp:
2013-09-12T14:52:58Z (11 years ago)
Author:
Martin Sucha <sucha14@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
b11f6fb
Parents:
6e75f2d (diff), f9f45e7 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge RFB (VNC) server

Files:
4 added
6 edited

Legend:

Unmodified
Added
Removed
  • .bzrignore

    r6e75f2d r3731d31  
    265265uspace/app/corecfg/corecfg
    266266uspace/dist/app/corecfg
     267uspace/dist/srv/rfb
     268uspace/srv/hid/rfb/rfb
  • boot/Makefile.common

    r6e75f2d r3731d31  
    112112        $(USPACE_PATH)/srv/hid/remcons/remcons \
    113113        $(USPACE_PATH)/srv/hid/isdv4_tablet/isdv4_tablet \
     114        $(USPACE_PATH)/srv/hid/rfb/rfb \
    114115        $(USPACE_PATH)/srv/net/dnsrsrv/dnsrsrv \
    115116        $(USPACE_PATH)/srv/net/ethip/ethip \
  • uspace/Makefile

    r6e75f2d r3731d31  
    121121        srv/hid/remcons \
    122122        srv/hw/char/s3c24xx_uart \
     123        srv/hid/rfb \
    123124        drv/audio/sb16 \
    124125        drv/infrastructure/root \
  • uspace/lib/c/generic/net/socket_client.c

    r6e75f2d r3731d31  
    923923 *                      message.
    924924 */
    925 int send(int socket_id, void *data, size_t datalength, int flags)
     925int send(int socket_id, const void *data, size_t datalength, int flags)
    926926{
    927927        /* Without the address */
  • uspace/lib/c/include/net/socket.h

    r6e75f2d r3731d31  
    5757extern int connect(int, const struct sockaddr *, socklen_t);
    5858extern int closesocket(int);
    59 extern int send(int, void *, size_t, int);
     59extern int send(int, const void *, size_t, int);
    6060extern int sendto(int, const void *, size_t, int, const struct sockaddr *,
    6161    socklen_t);
  • uspace/srv/hid/compositor/compositor.c

    r6e75f2d r3731d31  
    143143static LIST_INITIALIZE(viewport_list);
    144144
     145static FIBRIL_MUTEX_INITIALIZE(discovery_mtx);
     146
    145147/** Input server proxy */
    146148static input_t *input;
     
    21142116}
    21152117
     2118static int discover_viewports(void)
     2119{
     2120        /* Create viewports and connect them to visualizers. */
     2121        category_id_t cat_id;
     2122        int rc = loc_category_get_id("visualizer", &cat_id, IPC_FLAG_BLOCKING);
     2123        if (rc != EOK) {
     2124                printf("%s: Failed to get visualizer category.\n", NAME);
     2125                return -1;
     2126        }
     2127       
     2128        service_id_t *svcs;
     2129        size_t svcs_cnt = 0;
     2130        rc = loc_category_get_svcs(cat_id, &svcs, &svcs_cnt);
     2131        if (rc != EOK || svcs_cnt == 0) {
     2132                printf("%s: Failed to get visualizer category services.\n", NAME);
     2133                return -1;
     2134        }
     2135
     2136        fibril_mutex_lock(&viewport_list_mtx); 
     2137        for (size_t i = 0; i < svcs_cnt; ++i) {
     2138                bool exists = false;
     2139                list_foreach(viewport_list, link, viewport_t, vp) {
     2140                        if (vp->dsid == svcs[i]) {
     2141                                exists = true;
     2142                                break;
     2143                        }
     2144                }
     2145               
     2146                if (exists)
     2147                        continue;
     2148               
     2149                char *svc_name;
     2150                rc = loc_service_get_name(svcs[i], &svc_name);
     2151                if (rc == EOK) {
     2152                        viewport_t *vp = viewport_create(svc_name);
     2153                        if (vp != NULL) {
     2154                                list_append(&vp->link, &viewport_list);
     2155                        }
     2156                }
     2157        }
     2158        fibril_mutex_unlock(&viewport_list_mtx);
     2159       
     2160        /* TODO damage only newly added viewports */
     2161        comp_damage(0, 0, UINT32_MAX, UINT32_MAX);
     2162        return EOK;
     2163}
     2164
     2165static void category_change_cb(void)
     2166{
     2167        fibril_mutex_lock(&discovery_mtx);
     2168        discover_viewports();
     2169        fibril_mutex_unlock(&discovery_mtx);
     2170}
     2171
    21162172static int compositor_srv_init(char *input_svc, char *name)
    21172173{
     
    21652221        }
    21662222
    2167         /* Create viewports and connect them to visualizers. */
    2168         category_id_t cat_id;
    2169         rc = loc_category_get_id("visualizer", &cat_id, IPC_FLAG_BLOCKING);
     2223        rc = loc_register_cat_change_cb(category_change_cb);
    21702224        if (rc != EOK) {
    2171                 printf("%s: Failed to get visualizer category.\n", NAME);
     2225                printf("%s: Failed to register category change callback\n", NAME);
    21722226                input_disconnect();
    2173                 return -1;
    2174         }
    2175        
    2176         service_id_t *svcs;
    2177         size_t svcs_cnt = 0;
    2178         rc = loc_category_get_svcs(cat_id, &svcs, &svcs_cnt);
    2179         if (rc != EOK || svcs_cnt == 0) {
    2180                 printf("%s: Failed to get visualizer category services.\n", NAME);
     2227                return rc;
     2228        }       
     2229
     2230        rc = discover_viewports();
     2231        if (rc != EOK) {
    21812232                input_disconnect();
    2182                 return -1;
    2183         }
    2184        
    2185         for (size_t i = 0; i < svcs_cnt; ++i) {
    2186                 char *svc_name;
    2187                 rc = loc_service_get_name(svcs[i], &svc_name);
    2188                 if (rc == EOK) {
    2189                         viewport_t *vp = viewport_create(svc_name);
    2190                         if (vp != NULL) {
    2191                                 list_append(&vp->link, &viewport_list);
    2192                         }
    2193                 }
     2233                return rc;
    21942234        }
    21952235       
     
    22032243        comp_damage(0, 0, UINT32_MAX, UINT32_MAX);
    22042244       
     2245       
    22052246        return EOK;
    22062247}
Note: See TracChangeset for help on using the changeset viewer.