int bmx_libwebsockets_serve_http_file(struct libwebsocket_context * context, struct libwebsocket * wsi, BBString * file, BBString * contentType) { char * f = bbStringToUTF8String(file); char * c = bbStringToUTF8String(contentType); int ret = libwebsockets_serve_http_file(context, wsi, f, c); bbMemFree(c); bbMemFree(f); return ret; }
int bmx_volumes_volspace_refresh(BBString * vol, BBInt64 * _size, BBInt64 * _free) { struct statvfs buf; char * v = bbStringToUTF8String(vol); int res = statvfs(v, &buf); bbMemFree(v); *_size = buf.f_frsize * buf.f_blocks; *_free = buf.f_frsize * buf.f_bavail; return res; }
struct libwebsocket_protocols * bmx_libwebsockets_protocol_create(BBString * name) { struct libwebsocket_protocols * protocol = (struct libwebsocket_protocols *)calloc(1, sizeof(struct libwebsocket_protocols)); protocol->name = bbStringToUTF8String(name); protocol->callback = bmx_libwebsockets_callback; protocol->per_session_data_size = sizeof(BBObject *); return protocol; }
XML_Status bmx_expat_XML_SetEncoding(XML_Parser parser, BBString * encoding) { char * c = bbStringToUTF8String(encoding); XML_Status res = XML_SetEncoding(parser, c); bbMemFree(c); return res; }
XML_Status bmx_expat_XML_SetBase(XML_Parser parser, BBString * base) { char * c = bbStringToUTF8String(base); XML_Status res = XML_SetBase(parser, c); bbMemFree(c); return res; }
XML_Status bmx_expat_XML_Parse(XML_Parser parser, BBString * text, int isFinal) { char * c = bbStringToUTF8String(text); XML_Status res = XML_Parse(parser, c, strlen(c), isFinal); bbMemFree(c); return res; }
MaxLocale * bmx_boostlocale_generator_generate(boost::locale::generator * gen, BBString * id) { char * d = bbStringToUTF8String(id); MaxLocale * loc = new MaxLocale(gen->generate(d)); bbMemFree(d); return loc; }
BBString * bmx_userdirlookup(BBString * type) { char * t = bbStringToUTF8String(type); char * lookup = xdg_user_dir_lookup(t); bbMemFree(t); BBString * dir = bbStringFromUTF8String(lookup); free(lookup); return dir; }
SDL_Surface * bmx_sdl_LoadBMP(BBString * file) { char * f = bbStringToUTF8String(file); SDL_Surface * surface = SDL_LoadBMP(f); bbMemFree(f); return surface; }
BBSDLContext *bbSDLGraphicsCreateGraphics( int width,int height,int depth,int hz,int flags ) { int mode; char * appTitle = bbStringToUTF8String( bbAppTitle ); int windowFlags = 0; if ((flags & FLAGS_DX) == 0) { windowFlags = SDL_WINDOW_OPENGL; } if (flags & FLAGS_BORDERLESS) windowFlags |= SDL_WINDOW_BORDERLESS; if( depth ){ windowFlags |= SDL_WINDOW_FULLSCREEN; mode=MODE_DISPLAY; } else { if (flags & FLAGS_FULLSCREEN) { windowFlags |= SDL_WINDOW_FULLSCREEN_DESKTOP; } mode=MODE_WINDOW; } if ((flags & FLAGS_DX) == 0) { if (flags & FLAGS_BACKBUFFER) SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); if (flags & FLAGS_ALPHABUFFER) SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 1); if (flags & FLAGS_DEPTHBUFFER) SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); if (flags & FLAGS_STENCILBUFFER) SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 1); } #ifdef __ANDROID__ SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5); #endif #ifdef __RASPBERRYPI__ int rpi_mode; int rpi_group; if (depth && (flags & FLAGS_RPI_TV_FULLSCREEN)) { bmx_tvservice_get_closest_mode(width, height, hz, &rpi_mode, &rpi_group); bmx_tvservice_setmode(rpi_mode, rpi_group, width, height); } SDL_VideoInit(NULL); #endif SDL_Window *window = SDL_CreateWindow(appTitle, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, windowFlags); if (window == NULL) { printf("error... %s\n", SDL_GetError());fflush(stdout); return NULL; } SDL_GLContext context = 0; if ((flags & FLAGS_DX) == 0) { SDL_GL_SetSwapInterval(-1); context = SDL_GL_CreateContext(window); } BBSDLContext *bbcontext=(BBSDLContext*)malloc( sizeof(BBSDLContext) ); memset( bbcontext,0,sizeof(BBSDLContext) ); bbcontext->mode=mode; bbcontext->width=width; bbcontext->height=height; #ifdef __RASPBERRYPI__ bbcontext->depth=16; #else bbcontext->depth=24; #endif bbcontext->hertz=hz; bbcontext->flags=flags; bbcontext->sync=-1; bbcontext->window=window; bbcontext->context=context; SDL_GetWindowWMInfo(window, &bbcontext->info); return bbcontext; }
void bbWriteStderr( BBString *t ){ char *p=bbStringToUTF8String( t ); fprintf( stderr,"%s",p ); fflush( stderr ); bbMemFree(p); }