diff options
author | Jakob Bornecrantz | 2009-12-04 09:06:42 -0600 |
---|---|---|
committer | Jakob Bornecrantz | 2009-12-04 09:11:56 -0600 |
commit | 201f5795a26ae7b5580a35b24f4e89e5cd3455b1 (patch) | |
tree | a4c8f225beaa20e94a9f7116977ed924017fecb1 /libkms | |
parent | 8c0571a73399c372644c8d92a136a474f3e05d48 (diff) | |
download | libdrm-201f5795a26ae7b5580a35b24f4e89e5cd3455b1.tar.gz libdrm-201f5795a26ae7b5580a35b24f4e89e5cd3455b1.tar.xz libdrm-201f5795a26ae7b5580a35b24f4e89e5cd3455b1.zip |
libkms: Change destroy api a bit
Diffstat (limited to 'libkms')
-rw-r--r-- | libkms/api.c | 22 | ||||
-rw-r--r-- | libkms/libkms.h | 4 |
2 files changed, 20 insertions, 6 deletions
diff --git a/libkms/api.c b/libkms/api.c index f15ee70b..6f899c41 100644 --- a/libkms/api.c +++ b/libkms/api.c | |||
@@ -54,9 +54,13 @@ int kms_get_prop(struct kms_driver *kms, unsigned key, unsigned *out) | |||
54 | return kms->get_prop(kms, key, out); | 54 | return kms->get_prop(kms, key, out); |
55 | } | 55 | } |
56 | 56 | ||
57 | int kms_destroy(struct kms_driver *kms) | 57 | int kms_destroy(struct kms_driver **kms) |
58 | { | 58 | { |
59 | free(kms); | 59 | if (!(*kms)) |
60 | return 0; | ||
61 | |||
62 | free(*kms); | ||
63 | *kms = NULL; | ||
60 | return 0; | 64 | return 0; |
61 | } | 65 | } |
62 | 66 | ||
@@ -118,7 +122,17 @@ int kms_bo_unmap(struct kms_bo *bo) | |||
118 | return bo->kms->bo_unmap(bo); | 122 | return bo->kms->bo_unmap(bo); |
119 | } | 123 | } |
120 | 124 | ||
121 | int kms_bo_destroy(struct kms_bo *bo) | 125 | int kms_bo_destroy(struct kms_bo **bo) |
122 | { | 126 | { |
123 | return bo->kms->bo_destroy(bo); | 127 | int ret; |
128 | |||
129 | if (!(*bo)) | ||
130 | return 0; | ||
131 | |||
132 | ret = (*bo)->kms->bo_destroy(*bo); | ||
133 | if (ret) | ||
134 | return ret; | ||
135 | |||
136 | *bo = NULL; | ||
137 | return 0; | ||
124 | } | 138 | } |
diff --git a/libkms/libkms.h b/libkms/libkms.h index 9cc8ae21..eb2ed893 100644 --- a/libkms/libkms.h +++ b/libkms/libkms.h | |||
@@ -58,12 +58,12 @@ enum kms_bo_type | |||
58 | 58 | ||
59 | int kms_create(int fd, struct kms_driver **out); | 59 | int kms_create(int fd, struct kms_driver **out); |
60 | int kms_get_prop(struct kms_driver *kms, unsigned key, unsigned *out); | 60 | int kms_get_prop(struct kms_driver *kms, unsigned key, unsigned *out); |
61 | int kms_destroy(struct kms_driver *kms); | 61 | int kms_destroy(struct kms_driver **kms); |
62 | 62 | ||
63 | int kms_bo_create(struct kms_driver *kms, const unsigned *attr, struct kms_bo **out); | 63 | int kms_bo_create(struct kms_driver *kms, const unsigned *attr, struct kms_bo **out); |
64 | int kms_bo_get_prop(struct kms_bo *bo, unsigned key, unsigned *out); | 64 | int kms_bo_get_prop(struct kms_bo *bo, unsigned key, unsigned *out); |
65 | int kms_bo_map(struct kms_bo *bo, void **out); | 65 | int kms_bo_map(struct kms_bo *bo, void **out); |
66 | int kms_bo_unmap(struct kms_bo *bo); | 66 | int kms_bo_unmap(struct kms_bo *bo); |
67 | int kms_bo_destroy(struct kms_bo *bo); | 67 | int kms_bo_destroy(struct kms_bo **bo); |
68 | 68 | ||
69 | #endif | 69 | #endif |