ObjFW  Diff

Differences From Artifact [3969212ae0]:

  • File src/hid/OHGCFGameController.m — part of check-in [e46575d84e] at 2025-01-13 22:52:33 on branch trunk — ObjFWHID: Add support for N64 controller via GCF (user: js size: 5978)

To Artifact [2c8c1cae9b]:

  • File src/hid/OHGCFGameController.m — part of check-in [2399b5b055] at 2025-04-15 22:26:58 on branch trunk — Continue migrating to the ARC functions for RR (user: js size: 5999) [more...]

68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102

+ (OFArray<OHGameController *> *)controllers
{
	OFMutableArray *controllers = [OFMutableArray array];
	void *pool = objc_autoreleasePoolPush();

	for (GCController *controller in GCController.controllers)
		[controllers addObject: [[[self alloc]
		    oh_initWithGCController: controller] autorelease]];

	objc_autoreleasePoolPop(pool);

	return controllers;
}

- (instancetype)oh_init
{
	OF_INVALID_INIT_METHOD
}

- (instancetype)oh_initWithGCController: (GCController *)controller
{
	self = [super oh_init];

	@try {
		void *pool = objc_autoreleasePoolPush();

		_controller = [controller retain];
		_name = [_controller.vendorName.OFObject copy];

		if ([_name isEqual: @"DualSense Wireless Controller"])
			_profile = [[OHDualSenseGamepad alloc] oh_init];
		else if ([_name isEqual: @"DUALSHOCK 4 Wireless Controller"])
			_profile = [[OHDualShock4Gamepad alloc] oh_init];
		else if ([_name isEqual: @"Joy-Con (L/R)"])







|
|


















|







68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102

+ (OFArray<OHGameController *> *)controllers
{
	OFMutableArray *controllers = [OFMutableArray array];
	void *pool = objc_autoreleasePoolPush();

	for (GCController *controller in GCController.controllers)
		[controllers addObject: objc_autorelease(
		    [[self alloc] oh_initWithGCController: controller])];

	objc_autoreleasePoolPop(pool);

	return controllers;
}

- (instancetype)oh_init
{
	OF_INVALID_INIT_METHOD
}

- (instancetype)oh_initWithGCController: (GCController *)controller
{
	self = [super oh_init];

	@try {
		void *pool = objc_autoreleasePoolPush();

		_controller = objc_retain(controller);
		_name = [_controller.vendorName.OFObject copy];

		if ([_name isEqual: @"DualSense Wireless Controller"])
			_profile = [[OHDualSenseGamepad alloc] oh_init];
		else if ([_name isEqual: @"DUALSHOCK 4 Wireless Controller"])
			_profile = [[OHDualShock4Gamepad alloc] oh_init];
		else if ([_name isEqual: @"Joy-Con (L/R)"])
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
		else
			_profile = [[OHGCFExtendedGamepad alloc]
			    oh_initWithLiveInput:
			    _controller.input.unmappedInput];

		objc_autoreleasePoolPop(pool);
	} @catch (id e) {
		[self release];
		@throw e;
	}

	return self;
}

- (void)dealloc
{
	[_controller release];
	[_profile release];

	[super dealloc];
}

- (void)updateState
{
	void *pool = objc_autoreleasePoolPush();







|








|
|







118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
		else
			_profile = [[OHGCFExtendedGamepad alloc]
			    oh_initWithLiveInput:
			    _controller.input.unmappedInput];

		objc_autoreleasePoolPop(pool);
	} @catch (id e) {
		objc_release(self);
		@throw e;
	}

	return self;
}

- (void)dealloc
{
	objc_release(_controller);
	objc_release(_profile);

	[super dealloc];
}

- (void)updateState
{
	void *pool = objc_autoreleasePoolPush();