bhyvegc.c (4c87aefe8930bd07275b8dd2e96ea5f24d93a52e) bhyvegc.c (1aa1f41fe10c6220a7fbef328fac1b72a8355a01)
1/*-
2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3 *
4 * Copyright (c) 2015 Tycho Nightingale <tycho.nightingale@pluribusnetworks.com>
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions

--- 21 unchanged lines hidden (view full) ---

30__FBSDID("$FreeBSD$");
31
32#include <sys/types.h>
33
34#include <stdlib.h>
35#include <stdio.h>
36#include <string.h>
37
1/*-
2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3 *
4 * Copyright (c) 2015 Tycho Nightingale <tycho.nightingale@pluribusnetworks.com>
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions

--- 21 unchanged lines hidden (view full) ---

30__FBSDID("$FreeBSD$");
31
32#include <sys/types.h>
33
34#include <stdlib.h>
35#include <stdio.h>
36#include <string.h>
37
38#ifndef __FreeBSD__
39#include <pthread.h>
40#endif
41
38#include "bhyvegc.h"
39
40struct bhyvegc {
41 struct bhyvegc_image *gc_image;
42 int raw;
43};
44
45struct bhyvegc *

--- 12 unchanged lines hidden (view full) ---

58 gc->raw = 1;
59 } else {
60 gc_image->data = calloc(width * height, sizeof (uint32_t));
61 gc->raw = 0;
62 }
63
64 gc->gc_image = gc_image;
65
42#include "bhyvegc.h"
43
44struct bhyvegc {
45 struct bhyvegc_image *gc_image;
46 int raw;
47};
48
49struct bhyvegc *

--- 12 unchanged lines hidden (view full) ---

62 gc->raw = 1;
63 } else {
64 gc_image->data = calloc(width * height, sizeof (uint32_t));
65 gc->raw = 0;
66 }
67
68 gc->gc_image = gc_image;
69
70#ifndef __FreeBSD__
71 pthread_mutex_init(&gc_image->mtx, NULL);
72#endif
73
66 return (gc);
67}
68
69void
70bhyvegc_set_fbaddr(struct bhyvegc *gc, void *fbaddr)
71{
74 return (gc);
75}
76
77void
78bhyvegc_set_fbaddr(struct bhyvegc *gc, void *fbaddr)
79{
80#ifndef __FreeBSD__
81 pthread_mutex_lock(&gc->gc_image->mtx);
82#endif
72 gc->raw = 1;
73 if (gc->gc_image->data && gc->gc_image->data != fbaddr)
74 free(gc->gc_image->data);
75 gc->gc_image->data = fbaddr;
83 gc->raw = 1;
84 if (gc->gc_image->data && gc->gc_image->data != fbaddr)
85 free(gc->gc_image->data);
86 gc->gc_image->data = fbaddr;
87#ifndef __FreeBSD__
88 pthread_mutex_unlock(&gc->gc_image->mtx);
89#endif
76}
77
78void
79bhyvegc_resize(struct bhyvegc *gc, int width, int height)
80{
81 struct bhyvegc_image *gc_image;
82
90}
91
92void
93bhyvegc_resize(struct bhyvegc *gc, int width, int height)
94{
95 struct bhyvegc_image *gc_image;
96
97#ifndef __FreeBSD__
98 pthread_mutex_lock(&gc->gc_image->mtx);
99#endif
83 gc_image = gc->gc_image;
84
85 gc_image->width = width;
86 gc_image->height = height;
87 if (!gc->raw) {
88 gc_image->data = reallocarray(gc_image->data, width * height,
89 sizeof (uint32_t));
90 if (gc_image->data != NULL)
91 memset(gc_image->data, 0, width * height *
92 sizeof (uint32_t));
93 }
100 gc_image = gc->gc_image;
101
102 gc_image->width = width;
103 gc_image->height = height;
104 if (!gc->raw) {
105 gc_image->data = reallocarray(gc_image->data, width * height,
106 sizeof (uint32_t));
107 if (gc_image->data != NULL)
108 memset(gc_image->data, 0, width * height *
109 sizeof (uint32_t));
110 }
111#ifndef __FreeBSD__
112 pthread_mutex_unlock(&gc->gc_image->mtx);
113#endif
94}
95
96struct bhyvegc_image *
97bhyvegc_get_image(struct bhyvegc *gc)
98{
99 if (gc == NULL)
100 return (NULL);
101
102 return (gc->gc_image);
103}
114}
115
116struct bhyvegc_image *
117bhyvegc_get_image(struct bhyvegc *gc)
118{
119 if (gc == NULL)
120 return (NULL);
121
122 return (gc->gc_image);
123}