RFX_RECT rect;
unsigned long offset_beg;
- unsigned long surflen;
unsigned long stride;
rect.x = 0;
dispatch_semaphore_signal(region_sem);
};
+int mf_mlion_display_info(UINT32* disp_width, UINT32* disp_height, UINT32* scale)
+{
+ CGDirectDisplayID display_id;
+
+ display_id = CGMainDisplayID();
+
+ CGDisplayModeRef mode = CGDisplayCopyDisplayMode(display_id);
+
+ size_t pixelWidth = CGDisplayModeGetPixelWidth(mode);
+ size_t pixelHeight = CGDisplayModeGetPixelHeight(mode);
+
+ size_t wide = CGDisplayPixelsWide(display_id);
+ size_t high = CGDisplayPixelsHigh(display_id);
+
+ CGDisplayModeRelease(mode);
+
+ *disp_width = wide;//pixelWidth;
+ *disp_height = high;//pixelHeight;
+ *scale = pixelWidth / wide;
+
+ return 0;
+}
+
int mf_mlion_screen_updates_init()
{
printf("mf_mlion_screen_updates_init()\n");
region_sem = dispatch_semaphore_create(1);
data_sem = dispatch_semaphore_create(1);
- CGDisplayModeRef mode = CGDisplayCopyDisplayMode(display_id);
+ UINT32 pixelWidth;
+ UINT32 pixelHeight;
+ UINT32 scale;
- size_t pixelWidth = CGDisplayModeGetPixelWidth(mode);
- size_t pixelHeight = CGDisplayModeGetPixelHeight(mode);
-
- CGDisplayModeRelease(mode);
+ mf_mlion_display_info(&pixelWidth, &pixelHeight, &scale);
localBuf = malloc(pixelWidth * pixelHeight * 4);
NULL,
screen_update_q,
streamHandler);
- /*
-
- CFDictionaryRef opts;
-
- long ImageCompatibility;
- long BitmapContextCompatibility;
-
- void * keys[3];
- keys[0] = (void *) kCVPixelBufferCGImageCompatibilityKey;
- keys[1] = (void *) kCVPixelBufferCGBitmapContextCompatibilityKey;
- keys[2] = NULL;
-
- void * values[3];
- values[0] = (void *) &ImageCompatibility;
- values[1] = (void *) &BitmapContextCompatibility;
- values[2] = NULL;
-
- opts = CFDictionaryCreate(kCFAllocatorDefault, (const void **) keys, (const void **) values, 2, NULL, NULL);
-
- if (opts == NULL)
- {
- printf("failed to create dictionary\n");
- //return 1;
- }
-
- CVReturn status = CVPixelBufferCreate(kCFAllocatorDefault, pixelWidth,
- pixelHeight, kCVPixelFormatType_32ARGB, opts,
- &pxbuffer);
-
- if (status != kCVReturnSuccess)
- {
- printf("Failed to create pixel buffer! \n");
- //return 1;
- }
-
- CFRelease(opts);
-
- CVPixelBufferLockBaseAddress(pxbuffer, 0);
- baseAddress = CVPixelBufferGetBaseAddress(pxbuffer);
-
- CGColorSpaceRef rgbColorSpace = CGColorSpaceCreateDeviceRGB();
- bitmapcontext = CGBitmapContextCreate(baseAddress,
- pixelWidth,
- pixelHeight, 8, 4*pixelWidth, rgbColorSpace,
- kCGImageAlphaNoneSkipLast);
-
- if (bitmapcontext == NULL) {
- printf("context = null!!!\n\n\n");
- }
- CGColorSpaceRelease(rgbColorSpace);
- */
return 0;
const CGRect * rects = CGDisplayStreamUpdateGetRects(lastUpdate, kCGDisplayStreamUpdateDirtyRects, &num_rects);
- printf("\trectangles: %zd\n", num_rects);
+ //printf("\trectangles: %zd\n", num_rects);
if (num_rects == 0) {
//dispatch_semaphore_signal(region_sem);
int mf_mlion_clear_dirty_region()
{
- /* dispatch_semaphore_wait(region_sem, DISPATCH_TIME_FOREVER);
-
- clean = TRUE;
- dirtyRegion.size.width = 0;
- dirtyRegion.size.height = 0;
-
- dispatch_semaphore_signal(region_sem);
- */
+ dispatch_semaphore_wait(region_sem, DISPATCH_TIME_FOREVER);
CFRelease(lastUpdate);
lastUpdate = NULL;
+ dispatch_semaphore_signal(region_sem);
+
return 0;
}
else if (event->type == MF_EVENT_TYPE_FRAME_TICK)\r
{\r
event = mf_event_pop(info_event_queue);\r
- \r
- printf("Tick\n");\r
- \r
+ \r
mf_peer_rfx_update(client);\r
\r
mf_event_free(event);\r
cmd->bitmapData = stream_get_head(s);\r
\r
//send\r
- printf("send\n");\r
\r
update->SurfaceBits(update->context, cmd);\r
\r
if(info_timer)\r
{\r
//printf("created timer\n");\r
- dispatch_source_set_timer(info_timer, DISPATCH_TIME_NOW, 1ull * NSEC_PER_SEC, 100ull * NSEC_PER_MSEC);\r
+ dispatch_source_set_timer(info_timer, DISPATCH_TIME_NOW, 41ull * NSEC_PER_MSEC, 100ull * NSEC_PER_MSEC);\r
dispatch_source_set_event_handler(info_timer, ^{\r
- printf("dispatch\n");\r
+ //printf("dispatch\n");\r
mfEvent* event = mf_event_new(MF_EVENT_TYPE_FRAME_TICK);\r
mf_event_push(info_event_queue, (mfEvent*) event);}\r
);\r
mfInfo* mfi = mf_info_get_instance();\r
mfi->scale = 1;\r
\r
- mfi->servscreen_width = 2880 / mfi->scale;\r
- mfi->servscreen_height = 1800 / mfi->scale;\r
+ //mfi->servscreen_width = 2880 / mfi->scale;\r
+ //mfi->servscreen_height = 1800 / mfi->scale;\r
UINT32 bitsPerPixel = 32;\r
\r
if ((settings->DesktopWidth != mfi->servscreen_width) || (settings->DesktopHeight != mfi->servscreen_height))\r