Changeset 4552:47a0412f706d in roaraudio for roard/req.c


Ignore:
Timestamp:
10/25/10 14:03:43 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

implemented flag toggling and flag protection

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roard/req.c

    r4539 r4552  
    10731073 
    10741074int req_on_set_stream_para (int client, struct roar_message * mes, char ** data, uint32_t flags[2]) { 
     1075 struct roar_stream_server * ss; 
    10751076 uint16_t * d = (uint16_t *) mes->data; 
    1076  uint32_t tmp; 
     1077 uint32_t tmp, tmp2, flagstore; 
     1078 int protect = 0; 
    10771079 int i; 
    10781080 
     
    11071109    tmp |= d[3]; 
    11081110 
    1109     if ( d[2] == ROAR_RESET_FLAG ) { 
    1110      if ( streams_reset_flag(mes->stream, tmp) == -1 ) 
    1111       return -1; 
    1112     } else { 
    1113      if ( streams_set_flag(mes->stream, tmp) == -1 ) 
    1114       return -1; 
    1115     } 
     1111    if ( d[2] & ROAR_PROTECT_FLAG ) { 
     1112     protect = 1; 
     1113     d[2] -= ROAR_PROTECT_FLAG; 
     1114    } 
     1115 
     1116    switch (d[2]) { 
     1117     case ROAR_SET_FLAG: 
     1118       if ( streams_set_flag(mes->stream, tmp) == -1 ) 
     1119        return -1; 
     1120      break; 
     1121     case ROAR_RESET_FLAG: 
     1122       if ( streams_reset_flag(mes->stream, tmp) == -1 ) 
     1123        return -1; 
     1124      break; 
     1125     case ROAR_NOOP_FLAG: 
     1126      break; 
     1127     case ROAR_TOGGLE_FLAG: 
     1128       if ( streams_get(mes->stream, &ss) == -1 ) 
     1129        return -1; 
     1130 
     1131       flagstore = ss->flags; 
     1132 
     1133       tmp2 = flagstore & tmp; // those are the flags we need to reset. 
     1134       ROAR_DBG("req_on_set_stream_para(*): tmp2=0x%.8lx", (long int)tmp2); 
     1135       if ( tmp2 ) 
     1136        if ( streams_reset_flag(mes->stream, tmp2) == -1 ) 
     1137         return -1; 
     1138 
     1139       tmp2 = (flagstore ^ tmp) & tmp; // those are the flags we need to set. 
     1140       ROAR_DBG("req_on_set_stream_para(*): tmp2=0x%.8lx", (long int)tmp2); 
     1141       if ( tmp2 ) 
     1142        if ( streams_set_flag(mes->stream, tmp2) == -1 ) 
     1143         return -1; 
     1144      break; 
     1145     default: 
     1146       return -1; 
     1147      break; 
     1148    } 
     1149 
     1150   ROAR_DBG("req_on_set_stream_para(*): protect=%i", protect); 
     1151   if ( protect ) 
     1152    if ( streams_protect_flag(mes->stream, tmp) == -1 ) 
     1153     return -1; 
     1154 
    11161155   break; 
    11171156  case ROAR_STREAM_PARA_CHANMAP: 
Note: See TracChangeset for help on using the changeset viewer.